Guest User

argmax benchmark

a guest
Jan 13th, 2015
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.73 KB | None | 0 0
  1. import random
  2. import time
  3. import timeit
  4. from itertools import *
  5.  
  6. t = [random.random() for _ in range(100000)]
  7.  
  8. def argmax1( ):
  9.     return max( range(len(t)), key=lambda x:t[x] )
  10.  
  11. def argmax2( ):
  12.     return max( range(len(t)), key=t.__getitem__ )
  13.    
  14. def argmax3( ):
  15.     return t.index( max( t ) )
  16.    
  17. def argmax4( ):
  18.     return max(enumerate(t), key=lambda t:t[1])[0]
  19.    
  20. def argmax5( ):
  21.     ret = 0
  22.     maxval = t[0]
  23.     for i in range(len(t)):
  24.       if maxval < t[i]:
  25.         ret, maxval = i, t[i]
  26.     return ret
  27.    
  28. def argmax6( ):
  29.     return max(zip(t, range(len(t))))[1]
  30.    
  31. guys = [argmax1, argmax2, argmax3, argmax4, argmax5, argmax6 ]
  32. for f in guys:
  33.     print(f.__name__, timeit.timeit(f, number=10))
Advertisement
Add Comment
Please, Sign In to add comment