Skip to content

Latest commit

 

History

History
3579 lines (3326 loc) · 73.3 KB

bm-20250206-azure-x86_64-brandtbucher-justin_compact_exits-3.14.0a4+-aa6e11c-pystats-chaos-vs-base.md

File metadata and controls

3579 lines (3326 loc) · 73.3 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
ENTER_EXECUTOR 11,540,240 11,647,060 0.9%
CALL_METHOD_DESCRIPTOR_NOARGS 9,660 9,640 -0.2%
LOAD_ATTR_METHOD_NO_DICT 9,720 9,700 -0.2%
LOAD_ATTR 9,900 9,880 -0.2%
POP_ITER 11,520 11,540 0.2%
STORE_ATTR_INSTANCE_VALUE 1,207,680 1,207,620 -0.0%
CALL_BUILTIN_O 1,934,100 1,934,060 -0.0%
LOAD_CONST_IMMORTAL 1,212,280 1,212,260 -0.0%
PUSH_NULL 3,418,800 3,418,760 -0.0%
COMPARE_OP_INT 2,409,900 2,409,880 -0.0%
FOR_ITER_RANGE 3,031,140 3,031,160 0.0%
RESUME_CHECK 9,610,480 9,610,440 -0.0%
LOAD_FAST_LOAD_FAST 23,199,520 23,199,440 -0.0%
STORE_FAST 24,894,040 24,893,960 -0.0%
POP_JUMP_IF_FALSE 9,610,200 9,610,180 -0.0%
LOAD_FAST 82,611,480 82,611,360 -0.0%
LOAD_ATTR_INSTANCE_VALUE 51,693,580 51,693,580 0.0%
RETURN_VALUE 37,200,840 37,200,840 0.0%
LOAD_SMALL_INT 23,443,080 23,443,080 0.0%
BINARY_SUBSCR_LIST_INT 13,862,260 13,862,260 0.0%
BINARY_OP_SUBTRACT_INT 11,411,520 11,411,520 0.0%
BINARY_OP 10,233,460 10,233,460 0.0%
LOAD_GLOBAL_BUILTIN 9,613,020 9,613,020 0.0%
COMPARE_OP 8,402,100 8,402,100 0.0%
BINARY_OP_ADD_FLOAT 8,400,240 8,400,240 0.0%
EXIT_INIT_CHECK 8,400,120 8,400,120 0.0%
BINARY_SUBSCR_TUPLE_INT 7,800,060 7,800,060 0.0%
STORE_SUBSCR_LIST_INT 7,800,000 7,800,000 0.0%
CALL_PY_EXACT_ARGS 6,600,360 6,600,360 0.0%
LOAD_ATTR_METHOD_WITH_VALUES 6,600,360 6,600,360 0.0%
BINARY_OP_ADD_INT 5,789,620 5,789,620 0.0%
CALL_LEN 4,811,160 4,811,160 0.0%
GET_ITER 4,200,420 4,200,420 0.0%
CALL_BUILTIN_CLASS 4,200,420 4,200,420 0.0%
BINARY_OP_EXTEND 4,200,240 4,200,240 0.0%
POP_JUMP_IF_TRUE 4,200,180 4,200,180 0.0%
SWAP 4,189,080 4,189,080 0.0%
LOAD_GLOBAL_MODULE 3,884,520 3,884,520 0.0%
BUILD_TUPLE 3,600,360 3,600,360 0.0%
INTERPRETER_EXIT 3,000,120 3,000,120 0.0%
BINARY_OP_MULTIPLY_FLOAT 3,000,000 3,000,000 0.0%
BINARY_OP_SUBTRACT_FLOAT 2,400,300 2,400,300 0.0%
LOAD_CONST_MORTAL 2,400,120 2,400,120 0.0%
COMPARE_OP_FLOAT 2,400,000 2,400,000 0.0%
POP_TOP 2,107,980 2,107,980 0.0%
LOAD_ATTR_MODULE 2,084,340 2,084,340 0.0%
BUILD_LIST 1,230,840 1,230,840 0.0%
LIST_APPEND 1,230,720 1,230,720 0.0%
CALL_NON_PY_GENERAL 1,200,420 1,200,420 0.0%
LOAD_FAST_AND_CLEAR 1,200,120 1,200,120 0.0%
CALL_ALLOC_AND_ENTER_INIT 1,200,120 1,200,120 0.0%
COPY 1,200,000 1,200,000 0.0%
TO_BOOL_BOOL 600,300 600,300 0.0%
CALL_ISINSTANCE 600,240 600,240 0.0%
JUMP_FORWARD 600,060 600,060 0.0%
STORE_FAST_STORE_FAST 600,060 600,060 0.0%
UNPACK_SEQUENCE_TWO_TUPLE 600,060 600,060 0.0%
UNARY_NEGATIVE 600,000 600,000 0.0%
CALL_BOUND_METHOD_GENERAL 284,160 284,160 0.0%
NOT_TAKEN 121,340 121,340 0.0%
JUMP_BACKWARD_JIT 30,900 30,900 0.0%
BINARY_SUBSCR 11,220 11,220 0.0%
CALL 260 260 0.0%
COPY_FREE_VARS 180 180 0.0%
LOAD_DEREF 180 180 0.0%
POP_JUMP_IF_NOT_NONE 180 180 0.0%
CALL_PY_GENERAL 180 180 0.0%
CALL_METHOD_DESCRIPTOR_FAST 120 120 0.0%
CALL_TYPE_1 120 120 0.0%
LOAD_SUPER_ATTR_METHOD 120 120 0.0%
TO_BOOL_NONE 120 120 0.0%
TO_BOOL 100 100 0.0%
LOAD_GLOBAL 100 100 0.0%
CALL_FUNCTION_EX 60 60 0.0%
MAKE_FUNCTION 60 60 0.0%
NOP 60 60 0.0%
FOR_ITER 60 60 0.0%
IS_OP 60 60 0.0%
MAKE_CELL 60 60 0.0%
SET_FUNCTION_ATTRIBUTE 60 60 0.0%
STORE_DEREF 60 60 0.0%
CALL_METHOD_DESCRIPTOR_O 60 60 0.0%
UNPACK_SEQUENCE 20 20 0.0%

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.

10,230,960 4.3% 10,230,960 4.3% 0.0%
hit

Specialized instructions that complete.

230,356,500 95.7% 230,356,500 95.7% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 20 0.8% 20 0.8% 0.0%
Failure 2,480 99.2% 2,480 99.2% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
power 1,320 53.2% 1,320 53.2% 0.0%
true divide float 560 22.6% 560 22.6% 0.0%
multiply different types 180 7.3% 180 7.3% 0.0%
add other 140 5.6% 140 5.6% 0.0%
subtract other 140 5.6% 140 5.6% 0.0%
true divide other 140 5.6% 140 5.6% 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.

11,160 0.0% 11,160 0.0% 0.0%
hit

Specialized instructions that complete.

57,777,900 100.0% 57,777,900 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 20 33.3% 20 33.3% 0.0%
Failure 40 66.7% 40 66.7% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
out of range 40 100.0% 40 100.0% 0.0%

CALL

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

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

120 0.0% 120 0.0% 0.0%
hit

Specialized instructions that complete.

45,015,900 100.0% 45,015,900 100.0% 0.0%
miss

Specialized instructions that deopt.

120 0.0% 120 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 260 100.0% 260 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.

8,400,000 49.1% 8,400,000 49.1% 0.0%
hit

Specialized instructions that complete.

8,692,620 50.8% 8,692,620 50.8% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 20 1.0% 20 1.0% 0.0%
Failure 2,080 99.0% 2,080 99.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
float long 2,080 100.0% 2,080 100.0% 0.0%

FOR_ITER

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

Specialized instructions that complete.

3,031,140 100.0% 3,031,160 100.0% 0.0%
deferred

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

60 0.0% 60 0.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.

9,660 0.0% 9,640 0.0% -0.2%
hit

Specialized instructions that complete.

148,692,900 100.0% 148,692,900 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 200 83.3% 200 83.3% 0.0%
Failure 40 16.7% 40 16.7% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
method 20 50.0% 20 50.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.

13,497,540 100.0% 13,497,540 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 100 100.0% 100 100.0% 0.0%
Failure 0 0.0% 0 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.

120 100.0% 120 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.

26,407,920 100.0% 26,407,920 100.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.

7,800,000 100.0% 7,800,000 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.

600,420 100.0% 600,420 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 20 50.0% 20 50.0% 0.0%
Failure 20 50.0% 20 50.0% 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.

600,060 100.0% 600,060 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%

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 misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

180 0.0% 140 0.0% -22.2%
Basic

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

252,412,080 55.6% 252,518,580 55.6% 0.0%
Not specialized

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

18,657,220 4.1% 18,657,200 4.1% -0.0%
Specialized hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

182,893,820 40.3% 182,893,660 40.3% -0.0%

Deferred by instruction

Breakdown of deferred (not specialized) instruction counts by family
Name Base Count Base Ratio Head Count Head Ratio Change
LOAD_ATTR 9,660 0.1% 9,640 0.1% -0.2%
BINARY_OP 10,230,960 54.9% 10,230,960 54.9% 0.0%
COMPARE_OP 8,400,000 45.0% 8,400,000 45.0% 0.0%
BINARY_SUBSCR 11,160 0.1% 11,160 0.1% 0.0%
CALL 120 0.0% 120 0.0% 0.0%
TO_BOOL 60 0.0% 60 0.0% 0.0%
FOR_ITER 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
RESUME 60 25.0% 20 12.5% -66.7%
RESUME_CHECK 60 25.0% 20 12.5% -66.7%
CALL_METHOD_DESCRIPTOR_FAST 120 50.0% 120 75.0% 0.0%
CACHE 0 0.0% 0 0.0%
CALL_FUNCTION_EX 0 0.0% 0 0.0%
EXIT_INIT_CHECK 0 0.0% 0 0.0%
GET_ITER 0 0.0% 0 0.0%
INTERPRETER_EXIT 0 0.0% 0 0.0%
MAKE_FUNCTION 0 0.0% 0 0.0%
NOP 0 0.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 3,000,180 10.4% 3,000,180 10.4% 0.0%
Calls to Python functions inlined 25,800,540 89.6% 25,800,540 89.6% 0.0%
Calls via PyEval_EvalFrame (total) 3,000,180 10.4% 3,000,180 10.4% 0.0%
Calls via PyEval_EvalFrame (vector) 3,000,180 10.4% 3,000,180 10.4% 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) 3,000,180 10.4% 3,000,180 10.4% 0.0%
Calls via PyEval_EvalFrame (build class) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (slot) 1,800,000 6.2% 1,800,000 6.2% 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 37,200,840 129.2% 37,200,840 129.2% 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 dunder misses 32 25 -21.9%
Method cache collisions 57 52 -8.8%
Method cache misses 29 30 3.4%
Mortal increfs 411,921,141 45.4% 406,071,055 45.0% -1.4%
Mortal decrefs 425,972,064 33.1% 420,121,916 32.7% -1.4%
Allocations to 4 kbytes 30,800 0.0% 30,880 0.0% 0.3%
Interpreter mortal increfs 209,242,000 23.0% 209,348,660 23.2% 0.1%
Interpreter mortal decrefs 323,623,880 25.1% 323,730,620 25.2% 0.0%
Immortal decrefs 391,035,398 30.3% 391,142,374 30.5% 0.0%
Frees 26,484,063 26,484,341 0.0%
Allocations 25,284,160 19.7% 25,284,260 19.7% 0.0%
Method cache dunder hits 3,000,448 3,000,455 0.0%
Frees to freelist 103,210,720 103,210,480 -0.0%
Allocations from freelist 103,210,780 80.3% 103,210,540 80.3% -0.0%
Allocations to 512 bytes 25,253,360 19.7% 25,253,320 19.7% -0.0%
Interpreter immortal increfs 67,628,060 7.4% 67,627,960 7.5% -0.0%
Immortal increfs 219,502,641 24.2% 219,502,835 24.3% 0.0%
Method cache hits 1,200,211 1,200,210 -0.0%
Interpreter immortal decrefs 148,018,360 11.5% 148,018,240 11.5% -0.0%
Allocations over 4 kbytes 0 0.0% 60 0.0% 60 / 0 !!
Inline values 8,400,120 8,400,120 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 0 0 0 0 0 0 0 0 0 0
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
Traces executed

The number of traces that were executed

32,402,380 26,551,660 -18.1%
Trace too short

A potential trace is abandoned because it it too short.

2,700 97.1% 2,680 97.1% -0.7%
Trace stack underflow

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

2,720 97.8% 2,700 97.8% -0.7%
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.

2,780 2,760 -0.7%
Uops executed

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

2,042,213,060 6,302.7% 2,030,937,700 7,649.0% -0.6%
Traces created

The number of traces that were successfully created.

80 2.9% 80 2.9% 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 too long

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

0 0.0% 0 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.

0 0.0% 0 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%
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.

80 80 0.0%
Optimizer successes

The number of traces that were successfully optimized.

80 100.0% 80 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%

JIT memory stats

JIT memory stats
Base Size (bytes) Base Ratio Head Size (bytes) Head Ratio Change
Data size

The size of the memory allocated for the data of the JIT traces

61,280 10.7% 702,080 14.0% 1,045.7%
Code size

The size of the memory allocated for the code of the JIT traces

388,460 67.7% 4,032,260 80.7% 938.0%
Total memory size

The total size of the memory allocated for the JIT traces

573,440 4,997,120 771.4%
Padding size

The size of the memory allocated for the padding of the JIT traces

123,700 21.6% 262,780 5.3% 112.4%
Trampoline size

The size of the memory allocated for the trampolines of the JIT traces

0 0.0% 0 0.0%
Freed memory size

The size of the memory freed from the JIT traces

0 0.0% 4,997,120 100.0% 4,997,120 / 0 !!

JIT trace total memory histogram

JIT trace total memory histogram
Size (bytes) Base Count Base Ratio Head Count Head Ratio Change
<= 4,096 40 50.0% 40 18.2% 0.0%
<= 8,192 20 25.0% 40 18.2% 100.0%
<= 16,384 20 25.0% 60 27.3% 200.0%
<= 32,768 20 9.1%
<= 65,536 60 27.3%

Trace length histogram

trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 16 40 50.0% 40 50.0% 0.0%
<= 32 20 25.0% 20 25.0% 0.0%
<= 64 20 25.0% 20 25.0% 0.0%

Optimized trace length histogram

optimized trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 16 40 50.0% 40 50.0% 0.0%
<= 32 20 25.0% 20 25.0% 0.0%
<= 64 20 25.0% 20 25.0% 0.0%

Trace run length histogram

trace run length histogram

Uop execution stats

uop execution stats
Name Base Count Head Count Change
_DEOPT 60 40 -33.3%
_EXIT_TRACE 23,086,360 17,235,660 -25.3%
_START_EXECUTOR 32,402,380 26,551,660 -18.1%
_JUMP_TO_TOP 3,600,000 4,024,960 11.8%
_CALL_METHOD_DESCRIPTOR_NOARGS 1,190,400 1,190,420 0.0%
_LOAD_ATTR 1,190,400 1,190,420 0.0%
_LOAD_ATTR_METHOD_NO_DICT 1,190,400 1,190,420 0.0%
_STORE_FAST_2 1,256,420 1,256,440 0.0%
_CALL_BUILTIN_O 2,869,500 2,869,540 0.0%
_GUARD_IS_FALSE_POP 2,994,000 2,994,020 0.0%
_STORE_FAST_3 3,079,200 3,079,220 0.0%
_COMPARE_OP_INT 3,882,720 3,882,740 0.0%
_POP_TOP 6,281,520 6,281,500 -0.0%
_STORE_FAST_4 15,750,900 15,750,940 0.0%
_PUSH_NULL 16,385,340 16,385,380 0.0%
_GUARD_DORV_NO_DICT 25,200,240 25,200,300 0.0%
_GUARD_TYPE_VERSION_AND_LOCK 25,200,240 25,200,300 0.0%
_STORE_ATTR_INSTANCE_VALUE 25,200,240 25,200,300 0.0%
_CHECK_PERIODIC 27,563,460 27,563,520 0.0%
_LOAD_FAST_2 34,424,200 34,424,260 0.0%
_CHECK_VALIDITY_AND_SET_IP 46,254,900 46,254,980 0.0%
_LOAD_CONST_INLINE_BORROW 14,999,960 14,999,980 0.0%
_GUARD_BOTH_INT 16,704,380 16,704,400 0.0%
_LOAD_FAST_1 52,362,080 52,362,140 0.0%
_LOAD_FAST_3 61,182,760 61,182,820 0.0%
_LOAD_FAST_0 83,505,380 83,505,460 0.0%
_GUARD_NOT_EXHAUSTED_RANGE 22,300,080 22,300,060 -0.0%
_ITER_CHECK_RANGE 22,300,080 22,300,060 -0.0%
_GUARD_TYPE_VERSION 30,744,980 30,745,000 0.0%
_LOAD_FAST_4 30,869,080 30,869,100 0.0%
_SET_IP 247,220,400 247,220,540 0.0%
_CHECK_VALIDITY 229,559,440 229,559,560 0.0%
_CHECK_MANAGED_OBJECT_HAS_VALUES 77,514,740 77,514,740 0.0%
_LOAD_ATTR_INSTANCE_VALUE 77,514,740 77,514,740 0.0%
_LOAD_FAST 72,599,880 72,599,880 0.0%
_BINARY_OP_SUBTRACT_INT 57,600,000 57,600,000 0.0%
_BINARY_OP_MULTIPLY_FLOAT 43,200,000 43,200,000 0.0%
_BINARY_OP_ADD_INT 42,754,820 42,754,820 0.0%
_STORE_FAST 36,599,880 36,599,880 0.0%
_BINARY_SUBSCR_LIST_INT 36,115,580 36,115,580 0.0%
_MAKE_WARM 36,002,380 36,002,380 0.0%
_LOAD_SMALL_INT_1 32,644,440 32,644,440 0.0%
_BINARY_OP_EXTEND 28,800,000 28,800,000 0.0%
_GUARD_BINARY_OP_EXTEND 28,800,000 28,800,000 0.0%
_GUARD_NOS_FLOAT 28,800,000 28,800,000 0.0%
_GUARD_TOS_INT 22,044,360 22,044,360 0.0%
_BINARY_OP_ADD_FLOAT 21,600,000 21,600,000 0.0%
_LOAD_FAST_7 18,000,000 18,000,000 0.0%
_PUSH_FRAME 17,715,720 17,715,720 0.0%
_ITER_NEXT_RANGE 16,288,800 16,288,800 0.0%
_LOAD_FAST_5 15,600,000 15,600,000 0.0%
_GUARD_BOTH_FLOAT 15,599,760 15,599,760 0.0%
_LOAD_FAST_6 14,400,000 14,400,000 0.0%
_CHECK_FUNCTION 12,915,960 12,915,960 0.0%
_TIER2_RESUME_CHECK 10,790,540 10,790,540 0.0%
_SAVE_RETURN_OFFSET 10,515,720 10,515,720 0.0%
_CHECK_FUNCTION_VERSION 9,599,760 9,599,760 0.0%
_GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 9,599,760 9,599,760 0.0%
_GUARD_KEYS_VERSION 9,599,760 9,599,760 0.0%
_LOAD_ATTR_METHOD_WITH_VALUES 9,599,760 9,599,760 0.0%
_DYNAMIC_EXIT 9,315,960 9,315,960 0.0%
_LOAD_CONST_INLINE 9,315,960 9,315,960 0.0%
_CHECK_FUNCTION_EXACT_ARGS 8,999,880 8,999,880 0.0%
_RESUME_CHECK 8,399,760 8,399,760 0.0%
_CHECK_STACK_SPACE_OPERAND 7,799,880 7,799,880 0.0%
_CHECK_AND_ALLOCATE_OBJECT 7,200,000 7,200,000 0.0%
_CREATE_INIT_FRAME 7,200,000 7,200,000 0.0%
_GUARD_IS_NOT_NONE_POP 7,200,000 7,200,000 0.0%
_INIT_CALL_PY_EXACT_ARGS_3 7,200,000 7,200,000 0.0%
_CALL_BUILTIN_CLASS 5,399,880 5,399,880 0.0%
_GET_ITER 4,800,000 4,800,000 0.0%
_GUARD_IS_TRUE_POP 3,777,840 3,777,840 0.0%
_LIST_APPEND 3,600,000 3,600,000 0.0%
_LOAD_SMALL_INT_2 3,600,000 3,600,000 0.0%
_STORE_FAST_7 3,600,000 3,600,000 0.0%
_GUARD_NOS_INT 2,999,880 2,999,880 0.0%
_LOAD_SMALL_INT_0 2,400,000 2,400,000 0.0%
_GUARD_IS_NONE_POP 1,799,880 1,799,880 0.0%
_COMPARE_OP 1,689,120 1,689,120 0.0%
_PY_FRAME_GENERAL 1,515,840 1,515,840 0.0%
_IS_OP 1,200,000 1,200,000 0.0%
_CHECK_STACK_SPACE 1,200,000 1,200,000 0.0%
_INIT_CALL_PY_EXACT_ARGS_1 1,200,000 1,200,000 0.0%
_STORE_FAST_5 1,200,000 1,200,000 0.0%
_STORE_FAST_6 1,200,000 1,200,000 0.0%
_BINARY_OP 1,199,760 1,199,760 0.0%
_BINARY_OP_SUBTRACT_FLOAT 1,199,760 1,199,760 0.0%
_CHECK_METHOD_VERSION 915,960 915,960 0.0%
_EXPAND_METHOD 915,960 915,960 0.0%
_INIT_CALL_PY_EXACT_ARGS_0 599,880 599,880 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-02-06