-
-
Save michilu/3876516 to your computer and use it in GitHub Desktop.
python lru benchmarks
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
from functools32 import lru_cache | |
from time import time | |
import random | |
import sys | |
def benchtime(fn): | |
oldtime = time() | |
fn() | |
return time() - oldtime | |
N = int(sys.argv[1]) | |
size = int(sys.argv[2]) | |
@lru_cache(size) | |
def cache(x): | |
return x | |
def random_generate(): | |
for i in range(N): | |
yield random.randint(0,N) | |
random.seed("") | |
L = list(random_generate()) | |
@benchtime | |
def put_bench(): | |
for i in xrange(N): | |
cache(i) | |
@benchtime | |
def success_get_bench(): | |
for i in xrange(N): | |
cache(i) | |
@benchtime | |
def fail_get_bench(): | |
for i in xrange(N, N*2): | |
cache(i) | |
@benchtime | |
def get_bench(): | |
for i in L: | |
cache(i) | |
print N,"items for", size, "entry put ", put_bench, "sec" | |
print N,"items for", size, "entry get ", get_bench, "sec" | |
print N,"items for", size, "entry suc_get ", success_get_bench, "sec" | |
print N,"items for", size, "entry fail_get ", fail_get_bench, "sec" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
from lru import LRUCache | |
from time import time | |
import random | |
import sys | |
def benchtime(fn): | |
oldtime = time() | |
fn() | |
return time() - oldtime | |
N = int(sys.argv[1]) | |
size = int(sys.argv[2]) | |
cache = LRUCache(size) | |
def random_generate(): | |
for i in xrange(N): | |
yield random.randint(0,N) | |
random.seed("") | |
L = list(random_generate()) | |
@benchtime | |
def put_bench(): | |
for i in xrange(N): | |
cache[i] = i | |
@benchtime | |
def success_get_bench(): | |
for i in xrange(N): | |
try: | |
cache[i] | |
except KeyError: | |
pass | |
@benchtime | |
def fail_get_bench(): | |
for i in xrange(N, N*2): | |
try: | |
cache[i] | |
except KeyError: | |
pass | |
@benchtime | |
def put_overwrite_bench(): | |
for i in xrange(N): | |
cache[i] = i+1 | |
@benchtime | |
def put_random_bench(): | |
for i in L: | |
cache[i] = i+2 | |
@benchtime | |
def get_bench(): | |
for i in L: | |
try: | |
cache[i] | |
except KeyError: | |
pass | |
print N,"items for", size, "entry put ", put_bench, "sec" | |
print N,"items for", size, "entry put_ovw ", put_overwrite_bench, "sec" | |
print N,"items for", size, "entry put_rnd ", put_random_bench, "sec" | |
print N,"items for", size, "entry get ", get_bench, "sec" | |
print N,"items for", size, "entry suc_get ", success_get_bench, "sec" | |
print N,"items for", size, "entry fail_get ", fail_get_bench, "sec" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
from pylru import lrucache | |
from time import time | |
import random | |
import sys | |
def benchtime(fn): | |
oldtime = time() | |
fn() | |
return time() - oldtime | |
N = int(sys.argv[1]) | |
size = int(sys.argv[2]) | |
cache = lrucache(size) | |
def random_generate(): | |
for i in xrange(N): | |
yield random.randint(0,N) | |
random.seed("") | |
L = list(random_generate()) | |
@benchtime | |
def put_bench(): | |
for i in xrange(N): | |
cache[i] = i | |
@benchtime | |
def success_get_bench(): | |
for i in xrange(N): | |
try: | |
cache[i] | |
except KeyError: | |
pass | |
@benchtime | |
def fail_get_bench(): | |
for i in xrange(N, N*2): | |
try: | |
cache[i] | |
except KeyError: | |
pass | |
@benchtime | |
def put_overwrite_bench(): | |
for i in xrange(N): | |
cache[i] = i+1 | |
@benchtime | |
def put_random_bench(): | |
for i in L: | |
cache[i] = i+2 | |
@benchtime | |
def get_bench(): | |
for i in L: | |
try: | |
cache[i] | |
except KeyError: | |
pass | |
print N,"items for", size, "entry put ", put_bench, "sec" | |
print N,"items for", size, "entry put_ovw ", put_overwrite_bench, "sec" | |
print N,"items for", size, "entry put_rnd ", put_random_bench, "sec" | |
print N,"items for", size, "entry get ", get_bench, "sec" | |
print N,"items for", size, "entry suc_get ", success_get_bench, "sec" | |
print N,"items for", size, "entry fail_get ", fail_get_bench, "sec" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
from repoze.lru import LRUCache | |
from time import time | |
import random | |
import sys | |
def benchtime(fn): | |
oldtime = time() | |
fn() | |
return time() - oldtime | |
N = int(sys.argv[1]) | |
size = int(sys.argv[2]) | |
cache = LRUCache(size) | |
def random_generate(): | |
for i in xrange(N): | |
yield random.randint(0,N) | |
random.seed("") | |
L = list(random_generate()) | |
@benchtime | |
def put_bench(): | |
for i in xrange(N): | |
cache.put(i,i) | |
@benchtime | |
def success_get_bench(): | |
for i in xrange(N): | |
try: | |
cache.get(i) | |
except KeyError: | |
pass | |
@benchtime | |
def fail_get_bench(): | |
for i in xrange(N, N*2): | |
try: | |
cache.get(i) | |
except KeyError: | |
pass | |
@benchtime | |
def put_overwrite_bench(): | |
for i in xrange(N): | |
cache.put(i, i+1) | |
@benchtime | |
def put_random_bench(): | |
for i in L: | |
cache.put(i, i+2) | |
@benchtime | |
def get_bench(): | |
for i in L: | |
try: | |
cache.get(i) | |
except KeyError: | |
pass | |
print N,"items for", size, "entry put ", put_bench, "sec" | |
print N,"items for", size, "entry put_ovw ", put_overwrite_bench, "sec" | |
print N,"items for", size, "entry put_rnd ", put_random_bench, "sec" | |
print N,"items for", size, "entry get ", get_bench, "sec" | |
print N,"items for", size, "entry suc_get ", success_get_bench, "sec" | |
print N,"items for", size, "entry fail_get ", fail_get_bench, "sec" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ ./lru_timeit.py 10000 256 | |
10000 items for 256 entry put 0.298005819321 sec | |
10000 items for 256 entry put_ovw 0.302867889404 sec | |
10000 items for 256 entry put_rnd 0.336133003235 sec | |
10000 items for 256 entry get 0.0905029773712 sec | |
10000 items for 256 entry suc_get 0.0876998901367 sec | |
10000 items for 256 entry fail_get 0.0825998783112 sec | |
$ ./pylru_timeit.py 10000 256 | |
10000 items for 256 entry put 0.0539979934692 sec | |
10000 items for 256 entry put_ovw 0.0542681217194 sec | |
10000 items for 256 entry put_rnd 0.0558698177338 sec | |
10000 items for 256 entry get 0.0423328876495 sec | |
10000 items for 256 entry suc_get 0.0421359539032 sec | |
10000 items for 256 entry fail_get 0.0419249534607 sec | |
$ ./repoze_lru_timeit.py 10000 256 | |
10000 items for 256 entry put 0.0815148353577 sec | |
10000 items for 256 entry put_ovw 0.0860638618469 sec | |
10000 items for 256 entry put_rnd 0.102804899216 sec | |
10000 items for 256 entry get 0.0685160160065 sec | |
10000 items for 256 entry suc_get 0.0639691352844 sec | |
10000 items for 256 entry fail_get 0.0657799243927 sec | |
$ ./functools_timeit.py 10000 256 | |
10000 items for 256 entry put 0.277734041214 sec | |
10000 items for 256 entry get 0.273926019669 sec | |
10000 items for 256 entry suc_get 0.279987096786 sec | |
10000 items for 256 entry fail_get 0.278277873993 sec |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment