nfergu / hashtableperf

Tests hash table performance across 3 different languages: C++, Java, and Python
Apache License 2.0
5 stars 0 forks source link

Python Optimizations #1

Open grantjenks opened 8 years ago

grantjenks commented 8 years ago

You can make Python about 2x faster with these changes:

values = [value % maxInt for value in xrange(warmUpIterations)]
values = [(value, value * 2, value + 1) for value in values]
map_get = map.get

# for i in xrange(warmUpIterations):
#     num1 = i % maxInt
#     num2 = num1 * 2
#     num3 = num1 + 1
for num1, num2, num3 in values:
    map[num1] = num2
    value = map_get(num3)
    # if value:
    #     # Make sure we do something with the result so that it is not optimized away
    #     sum += value

What changed:

  1. Move the math out of the loop. You want to test hash table performance not integer math.
  2. Replace map.get with map_get to avoid the method lookup.
  3. Skip summing values. Python's dead-code optimizations are not very aggressive. The loop will stay.
nfergu commented 8 years ago

Great, thanks @grantjenks. I've referenced this issue from the main docs.