Skip to content

Latest commit

 

History

History
3830 lines (3574 loc) · 78.4 KB

bm-20250121-azure-x86_64-brandtbucher-remove_optimizer_api-3.14.0a4+-085e172-pystats-go-vs-base.md

File metadata and controls

3830 lines (3574 loc) · 78.4 KB

Execution counts

Execution counts for Tier 1 instructions.

The "miss ratio" column shows the percentage of times the instruction executed that it deoptimized. When this happens, the base unspecialized instruction is not counted.

Name Base Count Head Count Change
LOAD_FAST 173,029,500 173,029,500 0.0%
LOAD_ATTR_INSTANCE_VALUE 110,383,360 110,383,360 0.0%
STORE_FAST 55,953,940 55,953,940 0.0%
RETURN_VALUE 54,566,640 54,566,640 0.0%
POP_JUMP_IF_FALSE 49,089,540 49,089,540 0.0%
STORE_ATTR_INSTANCE_VALUE 41,574,300 41,574,300 0.0%
ENTER_EXECUTOR 40,034,120 40,034,120 0.0%
LOAD_FAST_LOAD_FAST 34,685,400 34,685,400 0.0%
COPY 34,338,620 34,338,620 0.0%
COMPARE_OP_INT 30,782,840 30,782,840 0.0%
LOAD_SMALL_INT 29,830,800 29,830,800 0.0%
TO_BOOL_BOOL 28,490,540 28,490,540 0.0%
LOAD_GLOBAL_MODULE 23,866,640 23,866,640 0.0%
POP_TOP 22,576,140 22,576,140 0.0%
SWAP 19,146,680 19,146,680 0.0%
POP_JUMP_IF_TRUE 17,375,220 17,375,220 0.0%
LOAD_CONST_IMMORTAL 16,887,960 16,887,960 0.0%
LOAD_METHOD_WITH_VALUES 16,397,780 16,397,780 0.0%
BINARY_OP_SUBTRACT_INT 14,772,040 14,772,040 0.0%
CALL_PY_EXACT_ARGS 14,758,440 14,758,440 0.0%
RESUME_CHECK 14,143,320 14,143,320 0.0%
BINARY_SUBSCR_LIST_INT 13,526,320 13,526,320 0.0%
BINARY_OP_ADD_INT 9,142,420 9,142,420 0.0%
STORE_SUBSCR_LIST_INT 8,497,080 8,497,080 0.0%
BINARY_OP 8,308,820 8,308,820 0.0%
TO_BOOL_INT 7,740,500 7,740,500 0.0%
FOR_ITER_LIST 4,529,720 4,529,720 0.0%
GET_ITER 4,426,440 4,426,440 0.0%
JUMP_FORWARD 3,572,100 3,572,100 0.0%
LOAD_METHOD_NO_DICT 3,265,900 3,265,900 0.0%
STORE_GLOBAL 2,568,200 2,568,200 0.0%
PUSH_NULL 2,195,200 2,195,200 0.0%
CALL_PY_GENERAL 2,050,180 2,050,180 0.0%
LOAD_GLOBAL_BUILTIN 1,982,900 1,982,900 0.0%
STORE_FAST_STORE_FAST 1,975,260 1,975,260 0.0%
CALL_LEN 1,887,600 1,887,600 0.0%
UNARY_NOT 1,887,540 1,887,540 0.0%
CALL_LIST_APPEND 1,858,800 1,858,800 0.0%
CALL_METHOD_DESCRIPTOR_FAST 1,296,120 1,296,120 0.0%
LIST_APPEND 1,008,660 1,008,660 0.0%
LOAD_CONST_MORTAL 959,120 959,120 0.0%
CALL_KW_PY 920,120 920,120 0.0%
NOT_TAKEN 832,560 832,560 0.0%
COMPARE_OP_FLOAT 796,020 796,020 0.0%
POP_ITER 742,580 742,580 0.0%
JUMP_BACKWARD 285,960
TO_BOOL_ALWAYS_TRUE 162,420 162,420 0.0%
TO_BOOL_NONE 126,920 126,920 0.0%
COMPARE_OP 105,420 105,420 0.0%
CALL_BUILTIN_CLASS 94,580 94,580 0.0%
CALL_BUILTIN_O 90,300 90,300 0.0%
FOR_ITER_RANGE 84,840 84,840 0.0%
BINARY_OP_MULTIPLY_INT 70,980 70,980 0.0%
BUILD_LIST 67,800 67,800 0.0%
CALL_METHOD_DESCRIPTOR_O 57,700 57,700 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 53,340 53,340 0.0%
FOR_ITER_TUPLE 48,600 48,600 0.0%
EXIT_INIT_CHECK 46,140 46,140 0.0%
CALL_ALLOC_AND_ENTER_INIT 46,140 46,140 0.0%
LOAD_ATTR_MODULE 41,420 41,420 0.0%
LOAD_ATTR 41,380 41,380 0.0%
IS_OP 41,220 41,220 0.0%
POP_JUMP_IF_NOT_NONE 41,220 41,220 0.0%
CALL_BOUND_METHOD_GENERAL 41,220 41,220 0.0%
UNPACK_SEQUENCE_TWO_TUPLE 38,940 38,940 0.0%
LOAD_FAST_AND_CLEAR 33,960 33,960 0.0%
STORE_FAST_LOAD_FAST 24,060 24,060 0.0%
NOP 19,200 19,200 0.0%
TO_BOOL_LIST 19,140 19,140 0.0%
BINARY_OP_EXTEND 12,020 12,020 0.0%
BINARY_SUBSCR 2,300 2,300 0.0%
CALL 440 440 0.0%
CALL_NON_PY_GENERAL 320 320 0.0%
BUILD_TUPLE 240 240 0.0%
LOAD_GLOBAL 240 240 0.0%
LOAD_METHOD 220 220 0.0%
COPY_FREE_VARS 120 120 0.0%
LOAD_DEREF 120 120 0.0%
CALL_ISINSTANCE 120 120 0.0%
TO_BOOL 100 100 0.0%
CALL_FUNCTION_EX 60 60 0.0%
MAKE_FUNCTION 60 60 0.0%
FOR_ITER 60 60 0.0%
MAKE_CELL 60 60 0.0%
SET_FUNCTION_ATTRIBUTE 60 60 0.0%
STORE_DEREF 60 60 0.0%
BINARY_OP_SUBTRACT_FLOAT 60 60 0.0%
BINARY_SUBSCR_TUPLE_INT 60 60 0.0%
CALL_TYPE_1 60 60 0.0%
LOAD_SUPER_METHOD_METHOD 60 60 0.0%
STORE_ATTR 20 20 0.0%
UNPACK_SEQUENCE 20 20 0.0%
JUMP_BACKWARD_JIT 285,960

Pair counts

Pair counts for top 100 opcode pairs

Pairs of specialized operations that deoptimize and are then followed by the corresponding unspecialized instruction are not counted as pairs.

Not included in comparative output.

Predecessor/Successor Pairs

Top 5 predecessors and successors of each Tier 1 opcode.

This does not include the unspecialized instructions that occur after a specialized instruction deoptimizes.

Not included in comparative output.

Specialization stats

Specialization stats by family

BINARY_OP

specialization stats for BINARY_OP family
Kind Base Count Base Ratio Head Count Head Ratio Change
deferred

Lists the number of "deferred" (i.e. not specialized) instructions executed.

8,301,520 17.7% 8,301,520 17.7% 0.0%
hit

Specialized instructions that complete.

38,584,560 82.1% 38,584,560 82.1% 0.0%
miss

Specialized instructions that deopt.

95,780 0.2% 95,780 0.2% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 1,820 20.0% 1,820 20.0% 0.0%
Failure 7,300 80.0% 7,300 80.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
add different types 5,220 71.5% 5,220 71.5% 0.0%
xor 2,000 27.4% 2,000 27.4% 0.0%
floor divide 40 0.5% 40 0.5% 0.0%
remainder 40 0.5% 40 0.5% 0.0%

BINARY_SUBSCR

specialization stats for BINARY_SUBSCR family
Kind Base Count Base Ratio Head Count Head Ratio Change
deferred

Lists the number of "deferred" (i.e. not specialized) instructions executed.

1,300 0.0% 1,300 0.0% 0.0%
hit

Specialized instructions that complete.

20,654,080 99.8% 20,654,080 99.8% 0.0%
miss

Specialized instructions that deopt.

43,040 0.2% 43,040 0.2% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 840 46.2% 840 46.2% 0.0%
Failure 980 53.8% 980 53.8% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
out of range 980 100.0% 980 100.0% 0.0%

CALL

specialization stats for CALL family
Kind Base Count Base Ratio Head Count Head Ratio Change
hit

Specialized instructions that complete.

59,466,360 100.0% 59,466,360 100.0% 0.0%
miss

Specialized instructions that deopt.

60 0.0% 60 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 440 100.0% 440 100.0% 0.0%
Failure 0 0.0% 0 0.0%

COMPARE_OP

specialization stats for COMPARE_OP family
Kind Base Count Base Ratio Head Count Head Ratio Change
deferred

Lists the number of "deferred" (i.e. not specialized) instructions executed.

103,920 0.1% 103,920 0.1% 0.0%
hit

Specialized instructions that complete.

79,657,380 99.8% 79,657,380 99.8% 0.0%
miss

Specialized instructions that deopt.

25,440 0.0% 25,440 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 520 26.3% 520 26.3% 0.0%
Failure 1,460 73.7% 1,460 73.7% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
big int 960 65.8% 960 65.8% 0.0%
float long 420 28.8% 420 28.8% 0.0%
bool 40 2.7% 40 2.7% 0.0%
long float 40 2.7% 40 2.7% 0.0%

CONTAINS_OP

specialization stats for CONTAINS_OP family
Kind Base Count Base Ratio Head Count Head Ratio Change
hit

Specialized instructions that complete.

1,887,540 100.0% 1,887,540 100.0% 0.0%

FOR_ITER

specialization stats for FOR_ITER family
Kind Base Count Base Ratio Head Count Head Ratio Change
deferred

Lists the number of "deferred" (i.e. not specialized) instructions executed.

60 0.0% 60 0.0% 0.0%
hit

Specialized instructions that complete.

4,663,160 100.0% 4,663,160 100.0% 0.0%

LOAD_ATTR

specialization stats for LOAD_ATTR family
Kind Base Count Base Ratio Head Count Head Ratio Change
deferred

Lists the number of "deferred" (i.e. not specialized) instructions executed.

41,160 0.0% 41,160 0.0% 0.0%
hit

Specialized instructions that complete.

317,021,440 100.0% 317,021,440 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 180 81.8% 180 81.8% 0.0%
Failure 40 18.2% 40 18.2% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
method 40 100.0% 40 100.0% 0.0%

LOAD_GLOBAL

specialization stats for LOAD_GLOBAL family
Kind Base Count Base Ratio Head Count Head Ratio Change
hit

Specialized instructions that complete.

52,157,720 100.0% 52,157,720 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 240 100.0% 240 100.0% 0.0%
Failure 0 0.0% 0 0.0%

LOAD_METHOD

specialization stats for LOAD_METHOD family
Kind Base Count Base Ratio Head Count Head Ratio Change
deferred

Lists the number of "deferred" (i.e. not specialized) instructions executed.

60 4.7% 60 4.7% 0.0%
miss

Specialized instructions that deopt.

1,060 82.8% 1,060 82.8% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 160 88.9% 160 88.9% 0.0%
Failure 20 11.1% 20 11.1% 0.0%

LOAD_SUPER_ATTR

specialization stats for LOAD_SUPER_ATTR family
Kind Base Count Base Ratio Head Count Head Ratio Change
hit

Specialized instructions that complete.

60 100.0% 60 100.0% 0.0%

STORE_ATTR

specialization stats for STORE_ATTR family
Kind Base Count Base Ratio Head Count Head Ratio Change
hit

Specialized instructions that complete.

46,589,340 100.0% 46,589,340 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 20 100.0% 20 100.0% 0.0%
Failure 0 0.0% 0 0.0%

STORE_SUBSCR

specialization stats for STORE_SUBSCR family
Kind Base Count Base Ratio Head Count Head Ratio Change
hit

Specialized instructions that complete.

8,497,080 100.0% 8,497,080 100.0% 0.0%

TO_BOOL

specialization stats for TO_BOOL family
Kind Base Count Base Ratio Head Count Head Ratio Change
deferred

Lists the number of "deferred" (i.e. not specialized) instructions executed.

60 0.0% 60 0.0% 0.0%
hit

Specialized instructions that complete.

44,280,600 96.9% 44,280,600 96.9% 0.0%
miss

Specialized instructions that deopt.

1,402,900 3.1% 1,402,900 3.1% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 26,500 99.9% 26,500 99.9% 0.0%
Failure 20 0.1% 20 0.1% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
sequence 20 100.0% 20 100.0% 0.0%

UNPACK_SEQUENCE

specialization stats for UNPACK_SEQUENCE family
Kind Base Count Base Ratio Head Count Head Ratio Change
hit

Specialized instructions that complete.

38,940 99.9% 38,940 99.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 20 100.0% 20 100.0% 0.0%
Failure 0 0.0% 0 0.0%

Specialization effectiveness

specialization effectiveness

All entries are execution counts. Should add up to the total number of Tier 1 instructions executed.

Instructions Base Count Base Ratio Head Count Head Ratio Change
Specialized hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

369,930,580 39.8% 370,216,540 39.8% 0.1%
Basic

Instructions that are not and cannot be specialized, e.g. LOAD_FAST.

550,395,480 59.2% 550,109,520 59.1% -0.1%
Not specialized

Instructions that could be specialized but aren't, e.g. LOAD_ATTR, BINARY_SLICE.

8,459,020 0.9% 8,459,020 0.9% 0.0%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

1,568,680 0.2% 1,568,680 0.2% 0.0%

Deferred by instruction

Breakdown of deferred (not specialized) instruction counts by family
Name Base Count Base Ratio Head Count Head Ratio Change
BINARY_OP 8,301,520 98.3% 8,301,520 98.3% 0.0%
COMPARE_OP 103,920 1.2% 103,920 1.2% 0.0%
LOAD_ATTR 41,160 0.5% 41,160 0.5% 0.0%
BINARY_SUBSCR 1,300 0.0% 1,300 0.0% 0.0%
TO_BOOL 60 0.0% 60 0.0% 0.0%
FOR_ITER 60 0.0% 60 0.0% 0.0%
LOAD_METHOD 60 0.0% 60 0.0% 0.0%
BINARY_SLICE 0 0.0% 0 0.0%
STORE_SLICE 0 0.0% 0 0.0%
CACHE 0 0.0% 0 0.0%

Misses by instruction

Breakdown of misses (specialized deopts) instruction counts by family
Name Base Count Base Ratio Head Count Head Ratio Change
TO_BOOL_BOOL 636,000 40.5% 636,000 40.5% 0.0%
TO_BOOL_INT 636,000 40.5% 636,000 40.5% 0.0%
BINARY_OP_ADD_INT 95,780 6.1% 95,780 6.1% 0.0%
TO_BOOL_NONE 66,140 4.2% 66,140 4.2% 0.0%
TO_BOOL_ALWAYS_TRUE 64,760 4.1% 64,760 4.1% 0.0%
BINARY_SUBSCR_LIST_INT 43,040 2.7% 43,040 2.7% 0.0%
COMPARE_OP_FLOAT 19,080 1.2% 19,080 1.2% 0.0%
COMPARE_OP_INT 6,360 0.4% 6,360 0.4% 0.0%
LOAD_METHOD_WITH_VALUES 1,060 0.1% 1,060 0.1% 0.0%
RESUME 400 0.0% 400 0.0% 0.0%

Call stats

Inlined calls and frame stats

This shows what fraction of calls to Python functions are inlined (i.e. not having a call at the C level) and for those that are not, where the call comes from. The various categories overlap.

Also includes the count of frame objects created.

Base Count Base Ratio Head Count Head Ratio Change
Calls to PyEval_EvalDefault 60 0.0% 60 0.0% 0.0%
Calls to Python functions inlined 55,311,840 100.0% 55,311,840 100.0% 0.0%
Calls via PyEval_EvalFrame (total) 60 0.0% 60 0.0% 0.0%
Calls via PyEval_EvalFrame (vector) 60 0.0% 60 0.0% 0.0%
Calls via PyEval_EvalFrame (generator) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (legacy) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (function vectorcall) 60 0.0% 60 0.0% 0.0%
Calls via PyEval_EvalFrame (build class) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (slot) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (function ex) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (api) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (method) 0 0.0% 0 0.0%
Frame objects created 0 0.0% 0 0.0%
Frames pushed 55,358,040 100.1% 55,358,040 100.1% 0.0%

Object stats

Allocations, frees and dict materializatons

Below, "allocations" means "allocations that are not from a freelist". Total allocations = "Allocations from freelist" + "Allocations".

"Inline values" is the number of values arrays inlined into objects.

The cache hit/miss numbers are for the MRO cache, split into dunder and other names.

Base Count Base Ratio Head Count Head Ratio Change
Method cache misses 39 60 53.8%
Method cache collisions 44 63 43.2%
Method cache dunder misses 7 5 -28.6%
Method cache dunder hits 293 295 0.7%
Method cache hits 42,561 42,540 -0.0%
Immortal increfs 184,051,707 15.2% 184,051,730 15.2% 0.0%
Immortal decrefs 201,683,119 15.1% 201,683,144 15.1% 0.0%
Frees 16,198,248 16,198,246 -0.0%
Mortal decrefs 349,560,753 26.2% 349,560,766 26.2% 0.0%
Mortal increfs 504,098,705 41.6% 504,098,720 41.6% 0.0%
Allocations from freelist 16,180,440 49.9% 16,180,440 49.9% 0.0%
Frees to freelist 16,179,560 16,179,560 0.0%
Allocations 16,244,980 50.1% 16,244,980 50.1% 0.0%
Allocations to 512 bytes 16,184,200 49.9% 16,184,200 49.9% 0.0%
Allocations to 4 kbytes 48,780 0.2% 48,780 0.2% 0.0%
Allocations over 4 kbytes 12,000 0.0% 12,000 0.0% 0.0%
Inline values 46,140 46,140 0.0%
Interpreter mortal increfs 346,178,600 28.6% 346,178,600 28.6% 0.0%
Interpreter mortal decrefs 532,900,200 39.9% 532,900,200 39.9% 0.0%
Interpreter immortal increfs 176,141,880 14.6% 176,141,880 14.6% 0.0%
Interpreter immortal decrefs 249,838,120 18.7% 249,838,120 18.7% 0.0%
Materialize dict (on request) 0 0.0% 0 0.0%
Materialize dict (new key) 0 0.0% 0 0.0%
Materialize dict (too big) 0 0.0% 0 0.0%
Materialize dict (str subclass) 0 0.0% 0 0.0%

GC stats

GC collections and effectiveness

Collected/visits gives some measure of efficiency.

Generation Base Collections Base Objects collected Base Object visits Base Reachable from roots Base Not reachable from roots Head Collections Head Objects collected Head Object visits Head Reachable from roots Head Not reachable from roots
0 0 0 0 0 0 0 0 0 0 0
1 20 22,100 2,882,520 5,360 36,240 20 22,100 2,882,520 5,360 36,240
2 0 0 0 0 0 0 0 0 0 0

Optimization (Tier 2) stats

statistics about the Tier 2 optimizer
Base Count Base Ratio Head Count Head Ratio Change
Optimization attempts

The number of times a potential trace is identified. Specifically, this occurs in the JUMP BACKWARD instruction when the counter reaches a threshold.

9,300 9,300 0.0%
Traces created

The number of traces that were successfully created.

760 8.2% 760 8.2% 0.0%
Trace stack overflow

A trace is truncated because it would require more than 5 stack frames.

0 0.0% 0 0.0%
Trace stack underflow

A potential trace is abandoned because it pops more frames than it pushes.

8,680 93.3% 8,680 93.3% 0.0%
Trace too long

A trace is truncated because it is longer than the instruction buffer.

0 0.0% 0 0.0%
Trace too short

A potential trace is abandoned because it it too short.

8,540 91.8% 8,540 91.8% 0.0%
Inner loop found

A trace is truncated because it has an inner loop

0 0.0% 0 0.0%
Recursive call

A trace is truncated because it has a recursive call.

100 1.1% 100 1.1% 0.0%
Low confidence

A trace is abandoned because the likelihood of the jump to top being taken is too low.

0 0.0% 0 0.0%
Executors invalidated

The number of executors that were invalidated due to watched dictionary changes.

0 0.0% 0 0.0%
Traces executed

The number of traces that were executed

91,350,180 91,350,180 0.0%
Uops executed

The total number of uops (micro-operations) that were executed

2,167,252,900 2,372.5% 2,167,252,900 2,372.5% 0.0%
Base Count Base Ratio Head Count Head Ratio Change
Optimizer attempts

The number of times the trace optimizer (_Py_uop_analyze_and_optimize) was run.

760 760 0.0%
Optimizer successes

The number of traces that were successfully optimized.

760 100.0% 760 100.0% 0.0%
Optimizer no memory

The number of optimizations that failed due to no memory.

0 0.0% 0 0.0%
Remove globals builtins changed

The builtins changed during optimization

0 0.0% 0 0.0%
Remove globals incorrect keys

The keys in the globals dictionary aren't what was expected

0 0.0% 0 0.0%

Trace length histogram

trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 1 0 0.0% 0 0.0%
<= 2 0 0.0% 0 0.0%
<= 4 0 0.0% 0 0.0%
<= 8 200 26.3% 200 26.3% 0.0%
<= 16 120 15.8% 120 15.8% 0.0%
<= 32 200 26.3% 200 26.3% 0.0%
<= 64 220 28.9% 220 28.9% 0.0%
<= 128 20 2.6% 20 2.6% 0.0%

Optimized trace length histogram

optimized trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 1 0 0.0% 0 0.0%
<= 2 0 0.0% 0 0.0%
<= 4 80 10.5% 80 10.5% 0.0%
<= 8 140 18.4% 140 18.4% 0.0%
<= 16 180 23.7% 180 23.7% 0.0%
<= 32 220 28.9% 220 28.9% 0.0%
<= 64 140 18.4% 140 18.4% 0.0%

Trace run length histogram

trace run length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 1 0 0.0% 0 0.0%

Uop execution stats

uop execution stats
Name Base Count Head Count Change
_SET_IP 163,385,200 163,385,200 0.0%
_CHECK_MANAGED_OBJECT_HAS_VALUES 142,606,100 142,606,100 0.0%
_LOAD_ATTR_INSTANCE_VALUE 142,606,100 142,606,100 0.0%
_CHECK_VALIDITY 126,701,980 126,701,980 0.0%
_GUARD_TYPE_VERSION 110,645,380 110,645,380 0.0%
_MAKE_WARM 98,111,380 98,111,380 0.0%
_LOAD_FAST_2 91,838,900 91,838,900 0.0%
_START_EXECUTOR 91,350,180 91,350,180 0.0%
_LOAD_FAST_0 88,682,680 88,682,680 0.0%
_EXIT_TRACE 79,347,620 79,347,620 0.0%
_GUARD_BOTH_INT 49,855,920 49,855,920 0.0%
_COMPARE_OP_INT 48,103,960 48,103,960 0.0%
_STORE_FAST_2 44,315,520 44,315,520 0.0%
_LOAD_FAST_1 42,254,160 42,254,160 0.0%
_GUARD_IS_TRUE_POP 41,721,020 41,721,020 0.0%
_GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 38,791,860 38,791,860 0.0%
_GUARD_KEYS_VERSION 38,791,860 38,791,860 0.0%
_LOAD_METHOD_WITH_VALUES 38,791,860 38,791,860 0.0%
_PUSH_FRAME 37,495,740 37,495,740 0.0%
_SAVE_RETURN_OFFSET 37,495,740 37,495,740 0.0%
_CHECK_PERIODIC 36,351,800 36,351,800 0.0%
_CHECK_FUNCTION_VERSION 35,693,840 35,693,840 0.0%
_CHECK_FUNCTION_EXACT_ARGS 31,411,200 31,411,200 0.0%
_CHECK_STACK_SPACE 28,454,040 28,454,040 0.0%
_GUARD_GLOBALS_VERSION_PUSH_KEYS 26,308,180 26,308,180 0.0%
_LOAD_GLOBAL_MODULE_FROM_KEYS 26,308,180 26,308,180 0.0%
_GUARD_NOT_EXHAUSTED_LIST 25,756,480 25,756,480 0.0%
_ITER_CHECK_LIST 25,756,480 25,756,480 0.0%
_TIER2_RESUME_CHECK 25,434,760 25,434,760 0.0%
_INIT_CALL_PY_EXACT_ARGS_1 25,247,600 25,247,600 0.0%
_ITER_NEXT_LIST 20,812,200 20,812,200 0.0%
_LOAD_FAST_3 17,418,780 17,418,780 0.0%
_CHECK_VALIDITY_AND_SET_IP 17,160,940 17,160,940 0.0%
_RESUME_CHECK 15,734,140 15,734,140 0.0%
_GUARD_IS_FALSE_POP 14,811,880 14,811,880 0.0%
_LOAD_FAST 13,295,600 13,295,600 0.0%
_STORE_FAST_3 12,302,940 12,302,940 0.0%
_DYNAMIC_EXIT 12,002,240 12,002,240 0.0%
_PUSH_NULL 9,295,220 9,295,220 0.0%
_LOAD_CONST_INLINE_BORROW 9,243,720 9,243,720 0.0%
_STORE_FAST 9,012,960 9,012,960 0.0%
_POP_TOP 8,518,360 8,518,360 0.0%
_BINARY_OP_ADD_INT 8,415,580 8,415,580 0.0%
_BINARY_SUBSCR_LIST_INT 7,170,740 7,170,740 0.0%
_LOAD_SMALL_INT_1 6,796,300 6,796,300 0.0%
_JUMP_TO_TOP 6,761,200 6,761,200 0.0%
_GUARD_NOS_INT 6,286,700 6,286,700 0.0%
_INIT_CALL_PY_EXACT_ARGS_0 6,163,600 6,163,600 0.0%
_TO_BOOL_BOOL 5,084,980 5,084,980 0.0%
_STORE_FAST_1 5,026,120 5,026,120 0.0%
_GUARD_DORV_NO_DICT 5,015,040 5,015,040 0.0%
_GUARD_TYPE_VERSION_AND_LOCK 5,015,040 5,015,040 0.0%
_STORE_ATTR_INSTANCE_VALUE 5,015,040 5,015,040 0.0%
_GUARD_GLOBALS_VERSION 4,997,680 4,997,680 0.0%
_LOAD_GLOBAL_BUILTINS 4,997,680 4,997,680 0.0%
_BINARY_OP_EXTEND 4,297,540 4,297,540 0.0%
_CHECK_ATTR_MODULE_PUSH_KEYS 4,297,540 4,297,540 0.0%
_GUARD_BINARY_OP_EXTEND 4,297,540 4,297,540 0.0%
_LOAD_ATTR_MODULE_FROM_KEYS 4,297,540 4,297,540 0.0%
_PY_FRAME_GENERAL 4,282,640 4,282,640 0.0%
_LOAD_FAST_4 4,129,440 4,129,440 0.0%
_CHECK_FUNCTION 3,689,520 3,689,520 0.0%
_STORE_GLOBAL 3,579,400 3,579,400 0.0%
_TO_BOOL_INT 3,502,840 3,502,840 0.0%
_CALL_BUILTIN_CLASS 3,459,640 3,459,640 0.0%
_COPY 2,976,940 2,976,940 0.0%
_SWAP 2,976,940 2,976,940 0.0%
_CHECK_STACK_SPACE_OPERAND 2,957,160 2,957,160 0.0%
_STORE_FAST_4 2,710,080 2,710,080 0.0%
_CALL_NON_PY_GENERAL 2,621,740 2,621,740 0.0%
_CHECK_IS_NOT_PY_CALLABLE 2,621,740 2,621,740 0.0%
_GET_ITER 2,326,140 2,326,140 0.0%
_GUARD_NOT_EXHAUSTED_RANGE 2,284,980 2,284,980 0.0%
_ITER_CHECK_RANGE 2,284,980 2,284,980 0.0%
_ITER_NEXT_RANGE 2,272,920 2,272,920 0.0%
_CONTAINS_OP_SET 1,887,540 1,887,540 0.0%
_CHECK_FUNCTION_VERSION_KW 1,801,900 1,801,900 0.0%
_LOAD_CONST_INLINE 1,801,900 1,801,900 0.0%
_PY_FRAME_KW 1,801,900 1,801,900 0.0%
_BINARY_OP 1,610,480 1,610,480 0.0%
_CALL_LEN 1,538,040 1,538,040 0.0%
_CALL_METHOD_DESCRIPTOR_O 1,238,540 1,238,540 0.0%
_LOAD_METHOD_NO_DICT 1,238,540 1,238,540 0.0%
_LOAD_FAST_6 970,280 970,280 0.0%
_STORE_FAST_6 970,280 970,280 0.0%
_LIST_APPEND 964,800 964,800 0.0%
_BINARY_OP_ADD_FLOAT 837,900 837,900 0.0%
_BINARY_OP_MULTIPLY_INT 837,900 837,900 0.0%
_CALL_BUILTIN_FAST 837,900 837,900 0.0%
_CALL_BUILTIN_O 837,900 837,900 0.0%
_GUARD_BOTH_FLOAT 837,900 837,900 0.0%
_LOAD_SMALL_INT 837,900 837,900 0.0%
_RETURN_VALUE 791,400 791,400 0.0%
_TO_BOOL_NONE 754,700 754,700 0.0%
_LOAD_FAST_5 689,360 689,360 0.0%
_GUARD_TOS_INT 665,640 665,640 0.0%
_STORE_FAST_5 638,240 638,240 0.0%
_LOAD_SMALL_INT_0 373,760 373,760 0.0%
_CHECK_PEP_523 356,320 356,320 0.0%
_BINARY_OP_SUBTRACT_INT 293,900 293,900 0.0%
_DEOPT 320 320 0.0%

Pair counts

Pair counts for top 100 Non-JIT uop pairs

Pairs of specialized operations that deoptimize and are then followed by the corresponding unspecialized instruction are not counted as pairs.

Not included in comparative output.

Unsupported opcodes

unsupported opcodes

Optimizer errored out with opcode

Optimization stopped after encountering this opcode

Rare events

Counts of rare/unlikely events
Event Base Count Head Count Change
set class

Setting an object's class, obj.__class__ = ...

0 0
set bases

Setting the bases of a class, cls.__bases__ = ...

0 0
set eval frame func

Setting the PEP 523 frame eval function _PyInterpreterState_SetFrameEvalFunc()

0 0
builtin dict

Modifying the builtins, __builtins__.__dict__[var] = ...

0 0
func modification

Modifying a function, e.g. func.__defaults__ = ..., etc.

0 0
watched dict modification

A watched dict has been modified

0 0
watched globals modification

A watched globals() dict has been modified

0 0

Meta stats

Meta statistics
Base Count Head Count Change
Number of data files 20 20 0.0%

Stats gathered on: 2025-01-22