Queues vs List

Rodrick Brown rodrick.brown at gmail.com
Fri Dec 25 17:21:25 EST 2009


Was reading the official python document and I noticed they mentioned queues
being more efficient for adding/removing elements vs list so I wrote a quick
test the validate this claim and I wasn't very impressed by the results it
seems queues are just slightly faster so my question to the list, is deque
used much in python over general lists?


  1 #!/usr/bin/python
  2
  3 import time
  4 from collections import deque
  5
  6 nameList = ["Eric","John","Michael"]
  7 #queue = deque(["Eric","John","Michael"])
  8 queue = deque(nameList)
  9
 10 def buildItems_q(q,n,mode):
 11     start = 0
 12     end = 0
 13
 14     if mode == 'q':
 15         start = time.time()
 16         for r in xrange(n):
 17             queue.append("Terry_%s" % r)
 18         end = time.time()
 19
 20         while q.pop() is not None:
 21             try:
 22                 q.pop()
 23             except IndexError:
 24                 pass
 25             break
 26     else:
 27         start = time.time()
 28         for r in xrange(n):
 29             q.append("Terry_%s" % r)
 30         end = time.time()
 31
 32         while q.pop() is not None:
 33             try:
 34                 q.pop()
 35             except IndexError:
 36                 pass
 37             break
 38
 39     return (end - start)
 40
 41 if __name__ == "__main__":
 42     size = 10000000
 43     mode = 'list'
44     runtime = buildItems_q(queue,size,mode)
 45     print "Total run time: %f (%s)" % (runtime,mode)
 46
 47     mode = 'Queue'
 48     runtime = buildItems_q(queue,size,mode)
 49     print "Total run time: %f (%s)" % (runtime,mode)


rbrown at laptop:~/code/python$ python queue.py
Total run time: 5.169290 (list)
Total run time: 5.112517 (Queue)




-- 
[ Rodrick R. Brown ]
http://www.rodrickbrown.com http://www.linkedin.com/in/rodrickbrown
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20091225/e1bdc56b/attachment.html>


More information about the Python-list mailing list