[Python-es] StringIO vs string
Antonio Fernandez Porrua
a.porrua en gmail.com
Jue Abr 1 19:28:54 CEST 2010
Hola, tenía que convertir un long a un string, para ello iba a utilizar una
función de pycrypto
el meollo del asunto lo hace el siguiente código
s = ''
n = long(n)
pack = struct.pack
while n > 0:
s = pack('>I', n & 0xffffffffL) + s
n = n >> 32
y he visto que suman strings, yo tenía entendido que los strings son
inmutables, y que para añadir caracteres a un string hay que volver a
asignar memoria y volver a copiarlo entero.
Probé a hacer lo mismo con cStringIO.StringIO
r=cStringIO.StringIO()
pack = struct.pack
while n:
r.write(pack('>I', n & 0xffffffffL)[0])
n = n >> 32
haciendo un test con longs de 500bytes y 10000 iteraciones
su código gana por bastante
StringIO.write
real 0m0.956s
user 0m0.940s
sys 0m0.016s
string
real 0m0.696s
user 0m0.680s
sys 0m0.012s
y este con longs de 5000 bytes
stringIO
real 0m11.296s
user 0m11.289s
sys 0m0.004s
string
real 0m9.753s
user 0m9.721s
sys 0m0.036s
¿Alguién sabe a que se debe esto?
¿cúando se deben usar strings y cuando StringIO?
Gracias.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100401/dae248d2/attachment.html>
Más información sobre la lista de distribución Python-es