Cachegrind Analysis =================== Environment: ------------ 2.4 Ghz Core 2 Duo running Mac OS/10.8 GCC-4.8 build of Python 3.4a from Hg checkout: f2d955afad8a Benchmarking code: ------------------ n = 335000 population = [randrange(10000000) for i in range(3*n//2)] shuffle(population) u = set(population[:n]) v = set(population[n//2:]) print(min(Timer('s&t; s|t; s-t; t-s; set(list(s))', 'from __main__ import u as s, v as t').repeat(2, 25))) Commands to generate statistics: -------------------------------- $ export MACOSX_DEPLOYMENT_TARGET=10.8 $ export CC=gcc-4.8 $ make distclean && ./configure --with-valgrind && make $ valgrind --tool=cachegrind --dsymutil=yes --LL=2097152,8,64 ./python.exe ~/doubletap/set_bench.py How to interpret the results: ----------------------------- http://valgrind.org/docs/manual/cg-manual.html#cg-manual.cgopts Baseline statistics ------------------- ==82723== ==82723== I refs: 23,588,151,170 ==82723== I1 misses: 77,657,120 ==82723== LLi misses: 35,558 ==82723== I1 miss rate: 0.32% ==82723== LLi miss rate: 0.00% ==82723== ==82723== D refs: 9,872,253,899 (6,554,274,186 rd + 3,317,979,713 wr) ==82723== D1 misses: 549,514,519 ( 501,175,893 rd + 48,338,626 wr) ==82723== LLd misses: 484,190,961 ( 438,614,041 rd + 45,576,920 wr) ==82723== D1 miss rate: 5.5% ( 7.6% + 1.4% ) ==82723== LLd miss rate: 4.9% ( 6.6% + 1.3% ) ==82723== ==82723== LL refs: 627,171,639 ( 578,833,013 rd + 48,338,626 wr) ==82723== LL misses: 484,226,519 ( 438,649,599 rd + 45,576,920 wr) ==82723== LL miss rate: 1.4% ( 1.4% + 1.3% ) Statistics with the adjacent probe patch ---------------------------------------- ==82722== ==82722== I refs: 23,630,679,066 ==82722== I1 misses: 95,945,733 ==82722== LLi misses: 38,210 ==82722== I1 miss rate: 0.40% ==82722== LLi miss rate: 0.00% ==82722== ==82722== D refs: 9,909,336,319 (6,588,726,222 rd + 3,320,610,097 wr) ==82722== D1 misses: 467,723,075 ( 421,493,307 rd + 46,229,768 wr) ==82722== LLd misses: 426,320,366 ( 380,774,763 rd + 45,545,603 wr) ==82722== D1 miss rate: 4.7% ( 6.3% + 1.3% ) ==82722== LLd miss rate: 4.3% ( 5.7% + 1.3% ) ==82722== ==82722== LL refs: 563,668,808 ( 517,439,040 rd + 46,229,768 wr) ==82722== LL misses: 426,358,576 ( 380,812,973 rd + 45,545,603 wr) ==82722== LL miss rate: 1.2% ( 1.2% + 1.3% )