|
|
|
Log messageAdd a class to gather runtime type and branch feedback, and use the eval loop to fill it with data. I've also added a second class to gather full feedback so that we can measure how real apps behave, but I haven't wired it up to a configure flag. A subsequent patch will use this to generate guards for generated machine code. Benchmarks for the eval loop on 64 bits: $ ./perf.py -b -2to3 -m ~/opensource/unladen-swallow/trunk/opt/python ~/opensource/unladen-swallow/patch/opt/python django: Min: 0.887909 -> 0.903288: 1.70% slower Avg: 0.908373 -> 0.944969: 3.87% slower Significant (t=-7.995901, a=0.95) Stddev: 0.02480 -> 0.02079: 19.28% smaller Mem max: 27872.000 -> 33048.000: 15.66% larger Usage over time: http://tinyurl.com/n6mkcz slowpickle: Min: 0.534891 -> 0.549578: 2.67% slower Avg: 0.565103 -> 0.581774: 2.87% slower Not significant Stddev: 0.09511 -> 0.09956: 4.47% larger Mem max: 25868.000 -> 27312.000: 5.29% larger Usage over time: http://tinyurl.com/nap3lj slowspitfire: Min: 0.555740 -> 0.610426: 8.96% slower Avg: 0.563715 -> 0.623751: 9.62% slower Significant (t=-23.964699, a=0.95) Stddev: 0.01272 -> 0.01233: 3.14% smaller Mem max: 137144.000 -> 140732.000: 2.55% larger Usage over time: http://tinyurl.com/n7sc6p slowunpickle: Min: 0.221658 -> 0.217232: 2.04% faster Avg: 0.231965 -> 0.235013: 1.30% slower Not significant Stddev: 0.02580 -> 0.03569: 27.72% larger Mem max: 15684.000 -> 17112.000: 8.35% larger Usage over time: http://tinyurl.com/laflp9 |
||||||