Commit afae11ea authored by Raymond Hettinger's avatar Raymond Hettinger

Update comment on prediction macros.

parent 66ef83bd
...@@ -615,18 +615,20 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) ...@@ -615,18 +615,20 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
COMPARE_OP is often followed by JUMP_IF_FALSE or JUMP_IF_TRUE. And, COMPARE_OP is often followed by JUMP_IF_FALSE or JUMP_IF_TRUE. And,
those opcodes are often followed by a POP_TOP. those opcodes are often followed by a POP_TOP.
Verifying the prediction costs a single high-speed test of register Verifying the prediction costs a single high-speed test of a register
variable against a constant. If the pairing was good, then the variable against a constant. If the pairing was good, then the
processor has a high likelihood of making its own successful branch processor's own internal branch predication has a high likelihood of
prediction which results in a nearly zero overhead transition to the success, resulting in a nearly zero-overhead transition to the
next opcode. next opcode. A successful prediction saves a trip through the eval-loop
including its two unpredictable branches, the HAS_ARG test and the
A successful prediction saves a trip through the eval-loop including switch-case. Combined with the processor's internal branch prediction,
its two unpredictable branches, the HAS_ARG test and the switch-case. a successful PREDICT has the effect of making the two opcodes run as if
they were a single new opcode with the bodies combined.
If collecting opcode statistics, turn off prediction so that
statistics are accurately maintained (the predictions bypass If collecting opcode statistics, your choices are to either keep the
the opcode frequency counter updates). predictions turned-on and interpret the results as if some opcodes
had been combined or turn-off predictions so that the opcode frequency
counter updates for both opcodes.
*/ */
#ifdef DYNAMIC_EXECUTION_PROFILE #ifdef DYNAMIC_EXECUTION_PROFILE
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment