Issue 4714: print opcode stats at the end of pybench runs (original) (raw)

On 2008-12-21 22:37, Antoine Pitrou wrote:

New submission from Antoine Pitrou <pitrou@free.fr>:

This patch prints opcode statistics at the end of a pybench run if DYNAMIC_EXECUTION_PROFILE has been enabled when compiling the interpreter.

Is it ok? Is it better to add it to the Benchmark class?

I don't think it's worth doing this for low-level and highly artificial benchmarks like the ones run by pybench.

Opcode statistics are much better taken in real life applications, e.g. let Django, Zope, etc. run for a day or two and then look at the opcode statistics.

If at all, then opcode statistics should be an optional feature enabled by a command line switch. I'd then create new methods bench.start_opcode_stats(), bench.stop_opcode_stats() and bench.get_opcode_stats().

Also note that this line will result in wrong results:

It should be:

start_opstats = sys.getdxp() ... stop_opstats = sys.getdxp() opstats = [new_value - old_value for new_value, old_value in zip(stop_opstats, start_opstats]

I don't think it's worth doing this for low-level and highly artificial benchmarks like the ones run by pybench.

Well, it can help to know which opcodes are executed when running a particular bunch of sub-tests :)

If at all, then opcode statistics should be an optional feature enabled by a command line switch. I'd then create new methods bench.start_opcode_stats(), bench.stop_opcode_stats() and bench.get_opcode_stats().

Also note that this line will result in wrong results:

You are right, my assumption was simply that the error would be in the noise.