[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