[IRC-DEV] Prueba de concepto de control de canales

Jesus Cea Avion jcea at argo.es
Thu May 30 20:23:02 CEST 2002


En previsión de "chan2", y antes de empezar a programar, he hecho una
prueba de carga y de memoria, para ver cuanta CPU y memoria consume un
uso "normal" de IRC-Hispano.

Para ello he capturado un "burst" de 3'7 megabytes, con unos 22200
usuarios y unos 16000 canales. Osea, una foto de IRC-Hispano típica a
las 19:00.

Procesar el BURST me lleva 15 segundos (en el equivalente a un cutre
Pentium 200). En memoria las estructuras, no optimizadas para tamaño ni
para velocidad, ocupan unos 15 megabytes, más o menos.

No va mal el python :-)

Adjunto el código python. Es muy sucio y guarro, porque estoy haciendo
solo una prueba de concepto, para hacerme una idea de rendimiento.

>>>>>
usuarios={}
canales={}

def lee(fichero) :
  global usuarios,canales
  for i in fichero.xreadlines() :
    n=i.split()
    if n[1]=='NICK' :
      try :
        if n[7][0]=='+' :
          usuarios[n[9]]={}
        else :
          usuarios[n[8]]={}
      except :
        pass
    elif n[1]=='BURST' :
      l=i.find(" :")
      if l>=0 : i=i[:l]
      n=i.split()
      if len(n)<5 : continue
      nombre=n[2]
      t=4
      m=n[4]
      if m[0]=='+' :
        t+=1
        if 'l' in m : t+=1
        if 'k' in m : t+=1
      n=n[t]
      for j in n.split(",") :
        l=j.find(":")
        if l>0 : j=j[:l]
        if canales.has_key(nombre) :
          canales[nombre][j]=1
        else :
          canales[nombre]={j:1}
        usuarios[j][nombre]=1

if __name__=="__main__" :
  import sys
  lee(sys.stdin)

  print "%d usuarios, en %d canales" %(len(usuarios),len(canales))
  print "Esperando Timeout..."
  import time
  time.sleep(10)
<<<<<

-- 
Jesus Cea Avion                         _/_/      _/_/_/        _/_/_/
jcea at argo.es http://www.argo.es/~jcea/ _/_/    _/_/  _/_/    _/_/  _/_/
                                      _/_/    _/_/          _/_/_/_/_/
PGP Key Available at KeyServ   _/_/  _/_/    _/_/          _/_/  _/_/
"Things are not so easy"      _/_/  _/_/    _/_/  _/_/    _/_/  _/_/
"My name is Dump, Core Dump"   _/_/_/        _/_/_/      _/_/  _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz



More information about the IRC-Dev mailing list