[ZODB-Dev] Iterating through a B-Tree 
    Gfeller Martin 
    Martin.Gfeller at comit.ch
       
    Tue Aug 12 12:26:18 EDT 2003
    
    
  
Dear all,
I thought I let you know a timing surprise I had with iterating through all keys of a B-Tree:
for k in list(conn.root.keys()):
	d = conn.root[k]
is 8 times faster than the same loop without the conversion of the keys to a list, with
conn.root being an OOBTree of length 47000. The timings on a 1 GHz Windows 2000 machine
are 5.8 vs. 46.7 seconds.
The actual difference seems to be in ZODB.FileStorage._load[615], which performs the physical read. My (naive) conjecture is that the list() forces all nodes to be read sequence, whereas without the list, a lot of file seeks are performed.
Of course, iterating through a whole tree is not very common, but when it happens it is good to know that it can be speed up.
Best regards,
Martin Gfeller
_______________________ 
COMIT Gruppe 
Risk Advice Services 
Pflanzschulstrasse 7 
CH-8004 Zürich 
Telefon	+41 (0) 1 298 92 00
http://www.comit.ch 
http://www.quantax.com - Quantax Professional - Downsized Trading and Risk System
    
    
More information about the ZODB-Dev
mailing list