Estoy pasando por un link about generators que alguien publicó. Al principio él compara las dos funciones a continuación. En su configuración, mostró un aumento de velocidad del 5% con el generador.Velocidad del generador en python 3
Estoy ejecutando Windows XP, Python 3.1.1, y parece que no puedo duplicar los resultados. Sigo mostrando el "modo antiguo" (logs1) como algo más rápido cuando se prueba con los registros proporcionados y hasta 1 GB de datos duplicados.
¿Alguien me puede ayudar a entender qué está pasando de manera diferente?
Gracias!
def logs1():
wwwlog = open("big-access-log")
total = 0
for line in wwwlog:
bytestr = line.rsplit(None,1)[1]
if bytestr != '-':
total += int(bytestr)
return total
def logs2():
wwwlog = open("big-access-log")
bytecolumn = (line.rsplit(None,1)[1] for line in wwwlog)
getbytes = (int(x) for x in bytecolumn if x != '-')
return sum(getbytes)
* edición, el espaciamiento en mal estado en copiar/pegar
Me parece que esas dos funciones son esencialmente las mismas. En ninguno de los casos está construyendo una gran lista, cuando podría haber usado un generador en su lugar. Así que no estoy sorprendido de que corran aproximadamente a la misma velocidad. – MatrixFrog
Eso tiene sentido, solo tengo curiosidad de por qué estaba obteniendo un aumento del 5% en la velocidad y estoy viendo una disminución del 1% consistentemente. – Will