fork download
  1. from timeit import timeit
  2.  
  3. setup = """aset = set((0, 1, 4, 9, 16, 17, 25, 33, 36, 41, 49, 57))
  4. fset = frozenset(aset)
  5. alist = [1 if i in aset else 0 for i in range(64)]
  6. atup = tuple(alist)
  7. adict1 = {k: 1 for k in aset}
  8. adict01 = {k: v for k, v in enumerate(alist)}
  9. astr = "".join(str(i) for i in alist)
  10. aint = int(astr[::-1], base=2)"""
  11.  
  12. number = 100000
  13. print("aset", timeit("""for i in range(64): i in aset""", setup=setup, number=number))
  14. print("fset", timeit("""for i in range(64): i in fset""", setup=setup, number=number))
  15. print("alis", timeit("""for i in range(64): alist[i]""", setup=setup, number=number))
  16. print("atup", timeit("""for i in range(64): atup[i]""", setup=setup, number=number))
  17. print("adict1", timeit("""for i in range(64): i in adict1""", setup=setup, number=number))
  18. print("adict01", timeit("""for i in range(64): adict01[i]""", setup=setup, number=number))
  19. print("astr", timeit("""for i in range(64): astr[i]=='1'""", setup=setup, number=number))
  20. print("aint", timeit("""for i in range(64): (aint >> i)&1""", setup=setup, number=number))
  21. print("ainta", timeit("""for i in range(64): (aint >> i)&1==1""", setup=setup, number=number))
  22.  
  23. """
  24. CPython3.6
  25. aset 4.607737780628608
  26. fset 6.032637844772291
  27. alis 5.8805711353431676
  28. atup 5.686480051314948
  29. adict1 6.327348300192433
  30. adict01 6.057316741500966
  31. astr 8.837673380372031
  32. aint 14.613222835150737
  33. ainta 18.338140346375887
  34.  
  35. PyPy3.6
  36. aset 1.233384477228993
  37. fset 1.307999486850545
  38. alis 0.1561483001924313
  39. atup 0.1921026298909556
  40. adict1 1.3074688903143041
  41. adict01 1.0625498396407957
  42. astr 0.5346504169339319
  43. aint 4.463426812059013
  44. ainta 5.157020654265555
  45. """
  46.  
Success #stdin #stdout 2.48s 27848KB
stdin
Standard input is empty
stdout
aset 0.21171387284994125
fset 0.19128940999507904
alis 0.18317005038261414
atup 0.18366244435310364
adict1 0.20648621767759323
adict01 0.1864994764328003
astr 0.2928228974342346
aint 0.458217054605484
ainta 0.5493751391768456