Dailydave mailing list archives
Re: A small fun Python puzzle
From: Daryl Tester <dt-dailydave () handcraftedcomputers com au>
Date: Tue, 01 Apr 2008 07:04:49 +1030
Dave Aitel wrote:
This is part of our smb file putter. With small files it works great. With larger files, it uses 100% of the CPU and takes forever. Can anyone spot why? (Answer forthcoming, of course)
Depending on the value of "large", I suspect slicing and garbage
collection become expensive operations. Given -
import time
def test(l):
data = ' ' * l
t = time.time()
while data != "":
data = data[1024:]
return time.time() - t
results in:
for l in [100000, 1000000, 5000000, 10000000]:
... print '%10d %f' % (l, test(l))
...
100000 0.006711
1000000 0.764886
5000000 28.554786
10000000 111.738498
(wow - so not linear ...)
An iterative version appears a lot faster (which, admittedly,
probably rules out the slicing operation) -
def test2(l):
data = ' ' * l
i = 0
t = time.time()
while i < l:
data2 = data[i:i+1024]
i += 1024
return time.time() - t
for l in [100000, 1000000, 5000000, 10000000]:
... print '%10d %f' % (l, test2(l))
...
100000 0.000320
1000000 0.003319
5000000 0.012145
10000000 0.021329
--
Regards,
Daryl Tester
"We are sexy, sexy Von Neumann machines." -- http://www.xkcd.org/387/
_______________________________________________
Dailydave mailing list
Dailydave () lists immunitysec com
http://lists.immunitysec.com/mailman/listinfo/dailydave
Current thread:
- Re: A small fun Python puzzle Daryl Tester (Apr 01)
- Re: A small fun Python puzzle ergosum (Apr 01)
- <Possible follow-ups>
- Re: A small fun Python puzzle Jeremy Kelley (Apr 01)
