Should you always favor xrange() over range()?

后端 未结 12 2122
后悔当初
后悔当初 2020-11-22 13:36

Why or why not?

12条回答
  •  旧时难觅i
    2020-11-22 14:23

    While xrange is faster than range in most circumstances, the difference in performance is pretty minimal. The little program below compares iterating over a range and an xrange:

    import timeit
    # Try various list sizes.
    for list_len in [1, 10, 100, 1000, 10000, 100000, 1000000]:
      # Time doing a range and an xrange.
      rtime = timeit.timeit('a=0;\nfor n in range(%d): a += n'%list_len, number=1000)
      xrtime = timeit.timeit('a=0;\nfor n in xrange(%d): a += n'%list_len, number=1000)
      # Print the result
      print "Loop list of len %d: range=%.4f, xrange=%.4f"%(list_len, rtime, xrtime)
    

    The results below shows that xrange is indeed faster, but not enough to sweat over.

    Loop list of len 1: range=0.0003, xrange=0.0003
    Loop list of len 10: range=0.0013, xrange=0.0011
    Loop list of len 100: range=0.0068, xrange=0.0034
    Loop list of len 1000: range=0.0609, xrange=0.0438
    Loop list of len 10000: range=0.5527, xrange=0.5266
    Loop list of len 100000: range=10.1666, xrange=7.8481
    Loop list of len 1000000: range=168.3425, xrange=155.8719
    

    So by all means use xrange, but unless you're on a constrained hardware, don't worry too much about it.

提交回复
热议问题