Skip to content

Latest commit

 

History

History
3688 lines (3428 loc) · 75 KB

bm-20250205-azure-x86_64-brandtbucher-justin_compact_exits-3.14.0a4+-31b1d53-pystats-crypto_pyaes-vs-base.md

File metadata and controls

3688 lines (3428 loc) · 75 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_ATTR_METHOD_NO_DICT 120 4,083,960 3,403,200.0%
CONTAINS_OP_SET 120 2,252,320 1,876,833.3%
CALL_TYPE_1 60 1,126,160 1,876,833.3%
CALL_METHOD_DESCRIPTOR_NOARGS 120 1,126,220 938,416.7%
LOAD_ATTR_CLASS 300 1,126,400 375,366.7%
FOR_ITER 300 983,340 327,680.0%
UNPACK_SEQUENCE_TWO_TUPLE 300 983,100 327,600.0%
LOAD_ATTR_PROPERTY 240 274,560 114,300.0%
LOAD_ATTR_MODULE 1,440 1,127,440 78,194.4%
PUSH_NULL 1,740 1,127,740 64,712.6%
POP_ITER 6,360 2,167,720 33,983.6%
EXTENDED_ARG 7,440 2,154,580 28,859.4%
JUMP_BACKWARD_JIT 42,420 4,904,460 11,461.7%
FOR_ITER_RANGE 726,660 6,166,600 748.6%
LOAD_GLOBAL_MODULE 1,044,600 6,934,800 563.9%
STORE_FAST 1,792,200 10,765,340 500.7%
POP_JUMP_IF_FALSE 697,440 3,224,100 362.3%
STORE_FAST_STORE_FAST 345,420 1,328,220 284.5%
CALL_BUILTIN_CLASS 696,300 2,532,460 263.7%
BINARY_OP_MULTIPLY_INT 690,480 2,042,160 195.8%
BINARY_SLICE 346,320 1,022,160 195.1%
RESUME_CHECK 1,086,480 3,176,020 192.3%
GET_ITER 1,042,860 2,879,020 176.1%
CALL_PY_EXACT_ARGS 1,036,680 2,838,520 173.8%
LOAD_GLOBAL_BUILTIN 1,038,120 2,713,140 161.4%
RETURN_VALUE 1,383,480 3,185,420 130.2%
LIST_APPEND 1,045,680 2,121,280 102.9%
BINARY_OP_EXTEND 10,183,820 19,368,840 90.2%
LOAD_ATTR_METHOD_WITH_VALUES 345,840 620,160 79.3%
STORE_SUBSCR_LIST_INT 9,236,640 4,101,840 -55.6%
CALL_LEN 1,037,040 1,585,960 52.9%
ENTER_EXECUTOR 10,357,820 5,284,560 -49.0%
BINARY_OP_ADD_INT 18,414,240 9,919,140 -46.1%
BINARY_OP 73,144,040 42,076,780 -42.5%
LOAD_FAST_LOAD_FAST 26,624,220 16,144,140 -39.4%
COPY 712,080 986,400 38.5%
COMPARE_OP_INT 718,320 992,780 38.2%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 17,746,320 11,418,240 -35.7%
BUILD_LIST 1,042,140 1,387,260 33.1%
BINARY_SUBSCR_LIST_INT 55,995,840 41,060,100 -26.7%
LOAD_ATTR_INSTANCE_VALUE 11,013,000 8,960,020 -18.6%
LOAD_FAST 68,112,360 63,628,280 -6.6%
LOAD_SMALL_INT 50,307,660 52,395,620 4.2%
SWAP 1,750,320 1,750,320 0.0%
LOAD_CONST_IMMORTAL 1,387,680 1,387,680 0.0%
BINARY_OP_SUBTRACT_INT 710,400 710,400 0.0%
LOAD_CONST_MORTAL 691,800 691,800 0.0%
POP_TOP 690,780 690,780 0.0%
LIST_EXTEND 690,300 690,300 0.0%
STORE_ATTR_INSTANCE_VALUE 346,800 346,800 0.0%
LOAD_FAST_AND_CLEAR 346,560 346,560 0.0%
UNPACK_SEQUENCE_LIST 345,120 345,120 0.0%
POP_JUMP_IF_TRUE 21,660 21,660 0.0%
STORE_FAST_LOAD_FAST 3,840 3,840 0.0%
JUMP_FORWARD 2,460 2,460 0.0%
BINARY_SUBSCR_TUPLE_INT 1,020 1,020 0.0%
CALL_BUILTIN_FAST 960 960 0.0%
CALL_NON_PY_GENERAL 780 780 0.0%
EXIT_INIT_CHECK 720 720 0.0%
CALL_ALLOC_AND_ENTER_INIT 720 720 0.0%
LOAD_ATTR 300 300 0.0%
POP_JUMP_IF_NOT_NONE 300 300 0.0%
TO_BOOL_BOOL 300 300 0.0%
CONTAINS_OP 280 280 0.0%
CALL 260 260 0.0%
BINARY_SUBSCR_DICT 240 240 0.0%
CALL_ISINSTANCE 240 240 0.0%
LOAD_GLOBAL 140 140 0.0%
CALL_FUNCTION_EX 120 120 0.0%
BUILD_TUPLE 120 120 0.0%
LOAD_DEREF 120 120 0.0%
TO_BOOL 100 100 0.0%
COMPARE_OP 80 80 0.0%
MAKE_FUNCTION 60 60 0.0%
NOP 60 60 0.0%
CALL_INTRINSIC_1 60 60 0.0%
COPY_FREE_VARS 60 60 0.0%
IS_OP 60 60 0.0%
LOAD_FAST_CHECK 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%
CALL_METHOD_DESCRIPTOR_O 60 60 0.0%
CALL_PY_GENERAL 60 60 0.0%
BINARY_SUBSCR 20 20 0.0%
UNPACK_SEQUENCE 20 20 0.0%
CALL_LIST_APPEND 4,083,840

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
miss

Specialized instructions that deopt.

208,140 0.1% 429,680 0.3% 106.4%
deferred

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

73,106,760 40.6% 42,034,660 28.1% -42.5%
hit

Specialized instructions that complete.

106,898,780 59.3% 106,998,200 71.6% 0.1%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 3,960 9.6% 8,140 16.2% 105.6%
Failure 37,180 90.4% 42,020 83.8% 13.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
lshift 400 1.1% 940 2.2% 135.0%
remainder 4,520 12.2% 2,300 5.5% -49.1%
and int 14,480 38.9% 20,000 47.6% 38.1%
rshift 2,440 6.6% 3,160 7.5% 29.5%
xor int 14,980 40.3% 15,260 36.3% 1.9%
floor divide 200 0.5% 200 0.5% 0.0%
add other 80 0.2% 80 0.2% 0.0%
multiply different types 80 0.2% 80 0.2% 0.0%

BINARY_SLICE

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

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

346,320 100.0% 1,022,160 100.0% 195.1%

BINARY_SUBSCR

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

Specialized instructions that complete.

147,158,700 100.0% 147,158,700 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%

CALL

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

Specialized instructions that complete.

23,134,140 100.0% 23,134,140 100.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.

60 0.0% 60 0.0% 0.0%
hit

Specialized instructions that complete.

1,063,440 100.0% 1,063,440 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 0 0.0% 0 0.0%
Failure 20 100.0% 20 100.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
bytes 20 100.0% 20 100.0% 0.0%

CONTAINS_OP

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

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

240 0.0% 240 0.0% 0.0%
hit

Specialized instructions that complete.

6,212,160 100.0% 6,212,160 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 0 0.0% 0 0.0%
Failure 40 100.0% 40 100.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
tuple 40 100.0% 40 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.

300 0.0% 983,100 13.7% 327,600.0%
hit

Specialized instructions that complete.

726,660 100.0% 6,166,600 86.2% 748.6%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 0 0.0%
Failure 240 100.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
zip 240 100.0%

LOAD_ATTR

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

Specialized instructions that complete.

83,611,080 100.0% 84,737,080 100.0% 1.3%
deferred

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

60 0.0% 60 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 220 91.7% 220 91.7% 0.0%
Failure 20 8.3% 20 8.3% 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.

2,082,720 100.0% 9,647,940 100.0% 363.2%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 140 100.0% 140 100.0% 0.0%
Failure 0 0.0% 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.

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

12,811,200 100.0% 12,811,200 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 15.0% 60 15.0% 0.0%
hit

Specialized instructions that complete.

300 75.0% 300 75.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.

5,865,180 100.0% 5,865,180 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.

208,200 0.1% 429,840 0.1% 106.5%
Not specialized

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

73,491,860 19.6% 44,083,480 12.1% -40.0%
Specialized hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

134,333,540 35.8% 148,575,640 40.7% 10.6%
Basic

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

166,986,740 44.5% 172,287,520 47.2% 3.2%

Deferred by instruction

Breakdown of deferred (not specialized) instruction counts by family
Name Base Count Base Ratio Head Count Head Ratio Change
FOR_ITER 300 0.0% 983,100 2.2% 327,600.0%
BINARY_SLICE 346,320 0.5% 1,022,160 2.3% 195.1%
BINARY_OP 73,106,760 99.5% 42,034,660 95.4% -42.5%
CONTAINS_OP 240 0.0% 240 0.0% 0.0%
TO_BOOL 60 0.0% 60 0.0% 0.0%
COMPARE_OP 60 0.0% 60 0.0% 0.0%
LOAD_ATTR 60 0.0% 60 0.0% 0.0%
STORE_SLICE 0 0.0% 0 0.0%
CACHE 0 0.0% 0 0.0%
BINARY_SUBSCR 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 0.0% 160 0.0% 166.7%
RESUME_CHECK 60 0.0% 160 0.0% 166.7%
BINARY_OP_EXTEND 208,140 99.9% 429,680 99.9% 106.4%
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%
MAKE_FUNCTION 0 0.0% 0 0.0%
NOP 0 0.0% 0 0.0%
POP_ITER 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 60 0.0% 60 0.0% 0.0%
Calls to Python functions inlined 5,524,080 100.0% 5,524,080 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) 60 0.0% 60 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 5,524,860 100.0% 5,524,860 100.0% 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
Allocations to 4 kbytes 20 0.0% 540 0.0% 2,600.0%
Allocations over 4 kbytes 240 0.0% 1,340 0.0% 458.3%
Interpreter mortal decrefs 235,471,260 17.7% 179,381,180 13.7% -23.8%
Interpreter mortal increfs 154,205,720 17.1% 128,630,840 14.5% -16.6%
Interpreter immortal increfs 68,184,600 7.5% 59,817,160 6.7% -12.3%
Method cache collisions 17 15 -11.8%
Interpreter immortal decrefs 183,561,120 13.8% 162,729,580 12.4% -11.3%
Mortal decrefs 460,100,206 34.5% 497,859,204 38.0% 8.2%
Method cache misses 26 24 -7.7%
Immortal increfs 288,116,906 31.9% 299,459,664 33.7% 3.9%
Immortal decrefs 453,885,766 34.0% 469,656,664 35.9% 3.5%
Mortal increfs 393,524,326 43.5% 400,762,304 45.1% 1.8%
Method cache hits 194 196 1.0%
Frees to freelist 39,815,720 39,819,720 0.0%
Allocations from freelist 39,815,820 26.0% 39,819,820 26.0% 0.0%
Frees 113,905,200 113,907,640 0.0%
Allocations 113,213,880 74.0% 113,215,500 74.0% 0.0%
Allocations to 512 bytes 113,213,620 74.0% 113,213,620 74.0% 0.0%
Inline values 720 720 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%
Method cache dunder hits 240 240 0.0%
Method cache dunder misses 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 created

The number of traces that were successfully created.

20 12.5% 1,420 100.0% 7,000.0%
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.

160 1,420 787.5%
Trace too short

A potential trace is abandoned because it it too short.

140 87.5% 0 0.0% -100.0%
Trace stack underflow

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

160 100.0% 20 1.4% -87.5%
Traces executed

The number of traces that were executed

21,225,480 6,829,900 -67.8%
Uops executed

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

1,721,053,620 8,108.4% 1,677,747,000 24,564.7% -2.5%
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.

20 1,420 7,000.0%
Optimizer successes

The number of traces that were successfully optimized.

20 100.0% 1,420 100.0% 7,000.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

8,800 10.7% 7,057,760 15.6% 80,101.8%
Code size

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

50,540 61.7% 35,303,880 77.8% 69,753.3%
Total memory size

The total size of the memory allocated for the JIT traces

81,920 45,383,680 55,300.0%
Padding size

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

22,580 27.6% 3,022,040 6.7% 13,283.7%
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% 48,660,480 107.2% 48,660,480 / 0 !!

JIT trace total memory histogram

JIT trace total memory histogram
Size (bytes) Base Count Base Ratio Head Count Head Ratio Change
<= 4,096 20 100.0% 20 1.2% 0.0%
<= 8,192 240 14.6%
<= 16,384 280 17.1%
<= 32,768 440 26.8%
<= 65,536 660 40.2%

Trace length histogram

trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 16 20 100.0% 20 1.4% 0.0%
<= 32 240 16.9%
<= 64 0 0.0%
<= 128 500 35.2%
<= 256 660 46.5%

Optimized trace length histogram

optimized trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 16 20 100.0% 20 1.4% 0.0%
<= 32 240 16.9%
<= 64 280 19.7%
<= 128 220 15.5%
<= 256 660 46.5%

Trace run length histogram

trace run length histogram

Uop execution stats

uop execution stats
Name Base Count Head Count Change
_STORE_SUBSCR_LIST_INT 3,574,560 8,709,360 143.6%
_LOAD_FAST_4 4,955,040 10,961,940 121.2%
_LOAD_FAST_5 4,955,040 10,961,940 121.2%
_TIER2_RESUME_CHECK 296,280 8,680 -97.1%
_COPY 344,880 70,560 -79.5%
_DYNAMIC_EXIT 344,880 70,560 -79.5%
_LOAD_ATTR_METHOD_WITH_VALUES 344,880 70,560 -79.5%
_LOAD_ATTR_PROPERTY_FRAME 344,880 70,560 -79.5%
_CALL_LEN 690,240 141,320 -79.5%
_COMPARE_OP_INT 345,120 70,660 -79.5%
_GUARD_BOTH_INT 345,120 70,660 -79.5%
_DEOPT 9,540,060 2,000,600 -79.0%
_CALL_LIST_APPEND 5,521,920 1,438,080 -74.0%
_LOAD_ATTR_METHOD_NO_DICT 5,521,920 1,438,080 -74.0%
_LOAD_SMALL_INT_1 1,380,480 359,520 -74.0%
_JUMP_TO_TOP 7,368,720 12,666,660 71.9%
_START_EXECUTOR 21,225,480 6,829,900 -67.8%
_BINARY_OP_MULTIPLY_INT 2,070,720 719,040 -65.3%
_BINARY_SLICE 1,035,360 359,520 -65.3%
_LOAD_SMALL_INT_2 1,035,360 359,520 -65.3%
_LOAD_SMALL_INT_3 1,035,360 359,520 -65.3%
_LOAD_FAST_6 6,680,640 10,689,440 60.0%
_EXIT_TRACE 11,340,540 4,758,740 -58.0%
_POP_TOP 4,141,440 1,980,080 -52.2%
_LOAD_SMALL_INT_0 5,521,920 2,679,200 -51.5%
_GET_ITER 3,796,320 1,960,160 -48.4%
_CALL_BUILTIN_CLASS 3,796,320 1,960,160 -48.4%
_STORE_FAST 8,282,820 4,299,600 -48.1%
_PUSH_FRAME 4,486,320 2,410,160 -46.3%
_SAVE_RETURN_OFFSET 4,486,320 2,410,160 -46.3%
_RETURN_VALUE 4,141,380 2,339,440 -43.5%
_RESUME_CHECK 4,141,440 2,339,600 -43.5%
_CHECK_FUNCTION_VERSION_INLINE 4,141,440 2,339,600 -43.5%
_CHECK_STACK_SPACE_OPERAND 4,141,440 2,339,600 -43.5%
_INIT_CALL_PY_EXACT_ARGS_1 4,141,440 2,339,600 -43.5%
_PUSH_NULL 14,840,040 8,400,920 -43.4%
_LOAD_CONST_INLINE_BORROW 6,902,340 3,940,080 -42.9%
_CHECK_FUNCTION 11,043,780 6,350,340 -42.5%
_LOAD_CONST_INLINE 11,043,720 6,440,760 -41.7%
_GUARD_IS_TRUE_POP 3,451,140 2,050,580 -40.6%
_LOAD_FAST_1 10,698,540 6,369,940 -40.5%
_GUARD_TYPE_VERSION 21,693,240 12,980,000 -40.2%
_GUARD_TOS_INT 23,714,880 32,885,820 38.7%
_CONTAINS_OP_SET 6,212,040 3,959,840 -36.3%
_CALL_TYPE_1 3,106,020 1,979,920 -36.3%
_CALL_METHOD_DESCRIPTOR_NOARGS 3,106,020 1,979,920 -36.3%
_CHECK_ATTR_CLASS 3,106,020 1,979,920 -36.3%
_GUARD_IS_FALSE_POP 3,106,020 1,979,920 -36.3%
_LOAD_ATTR_CLASS 3,106,020 1,979,920 -36.3%
_STORE_FAST_1 3,106,020 1,979,920 -36.3%
_BINARY_OP 85,072,800 115,828,120 36.2%
_BINARY_OP_ADD_INT 24,750,240 33,245,340 34.3%
_LOAD_FAST_2 7,245,360 4,896,480 -32.4%
_LOAD_FAST_7 49,155,360 62,704,560 27.6%
_GUARD_BINARY_OP_EXTEND 59,826,960 43,423,160 -27.4%
_CHECK_MANAGED_OBJECT_HAS_VALUES 7,666,440 9,719,420 26.8%
_LOAD_ATTR_INSTANCE_VALUE 7,666,440 9,719,420 26.8%
_ITER_NEXT_RANGE 17,946,240 13,281,620 -26.0%
_MAKE_WARM 28,594,200 21,284,380 -25.6%
_STORE_FAST_7 15,185,280 11,321,460 -25.4%
_CHECK_PERIODIC 31,058,820 23,235,700 -25.2%
_GUARD_NOT_EXHAUSTED_RANGE 22,087,680 16,647,740 -24.6%
_ITER_CHECK_RANGE 22,087,680 16,647,740 -24.6%
_LOAD_FAST_3 19,324,560 15,498,900 -19.8%
_LIST_APPEND 5,864,880 4,789,280 -18.3%
_UNPACK_SEQUENCE_TWO_TUPLE 5,519,760 4,536,960 -17.8%
_STORE_FAST_2 5,519,760 4,536,960 -17.8%
_STORE_FAST_3 5,519,760 4,536,960 -17.8%
_FOR_ITER_TIER_TWO 5,520,000 4,537,200 -17.8%
_BINARY_OP_EXTEND 50,286,960 41,422,900 -17.6%
_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 37,519,680 43,847,760 16.9%
_BINARY_SUBSCR_LIST_INT 91,161,600 106,097,340 16.4%
_GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 37,864,560 43,918,320 16.0%
_GUARD_KEYS_VERSION 37,864,560 43,918,320 16.0%
_CHECK_VALIDITY_AND_SET_IP 114,060,660 126,756,340 11.1%
_LOAD_FAST_0 55,539,600 58,965,100 6.2%
_LOAD_FAST 52,483,200 55,433,280 5.6%
_SET_IP 226,762,620 219,180,900 -3.3%
_LOAD_SMALL_INT 113,125,920 116,253,320 2.8%
_CHECK_VALIDITY 204,675,000 203,721,440 -0.5%
_BUILD_LIST 345,120

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