Skip to content

Latest commit

 

History

History
3628 lines (3362 loc) · 73.3 KB

bm-20250207-azure-x86_64-brandtbucher-trace_binary_subscr_-3.14.0a4+-658718a-pystats-go-vs-base.md

File metadata and controls

3628 lines (3362 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
LOAD_FAST 407,495,260 407,495,260 0.0%
LOAD_ATTR_INSTANCE_VALUE 242,637,300 242,637,300 0.0%
STORE_FAST 113,898,300 113,898,300 0.0%
POP_JUMP_IF_FALSE 86,549,340 86,549,340 0.0%
COMPARE_OP_INT 70,890,500 70,890,500 0.0%
RETURN_VALUE 55,358,040 55,358,040 0.0%
RESUME_CHECK 55,311,900 55,311,900 0.0%
LOAD_ATTR_METHOD_WITH_VALUES 55,189,640 55,189,640 0.0%
CALL_PY_EXACT_ARGS 46,169,640 46,169,640 0.0%
LOAD_GLOBAL_MODULE 43,292,060 43,292,060 0.0%
STORE_ATTR_INSTANCE_VALUE 42,440,240 42,440,240 0.0%
LOAD_FAST_LOAD_FAST 35,308,220 35,308,220 0.0%
LOAD_SMALL_INT 35,229,720 35,229,720 0.0%
COPY 35,105,660 35,105,660 0.0%
TO_BOOL_BOOL 33,575,520 33,575,520 0.0%
POP_JUMP_IF_TRUE 29,123,960 29,123,960 0.0%
POP_TOP 25,233,080 25,233,080 0.0%
LOAD_CONST_IMMORTAL 23,478,320 23,478,320 0.0%
SWAP 19,913,720 19,913,720 0.0%
BINARY_SUBSCR_LIST_INT 19,727,460 19,727,460 0.0%
FOR_ITER_LIST 19,010,720 19,010,720 0.0%
BINARY_OP_ADD_INT 15,811,280 15,811,280 0.0%
JUMP_BACKWARD_JIT 15,268,840 15,268,840 0.0%
BINARY_OP_SUBTRACT_INT 15,065,940 15,065,940 0.0%
TO_BOOL_INT 11,243,340 11,243,340 0.0%
STORE_SUBSCR_LIST_INT 8,497,080 8,497,080 0.0%
BINARY_OP 8,302,800 8,302,800 0.0%
LOAD_GLOBAL_BUILTIN 6,750,700 6,750,700 0.0%
GET_ITER 6,589,440 6,589,440 0.0%
CALL_PY_GENERAL 6,332,820 6,332,820 0.0%
STORE_GLOBAL 6,147,600 6,147,600 0.0%
LOAD_ATTR_METHOD_NO_DICT 4,504,440 4,504,440 0.0%
PUSH_NULL 4,388,400 4,388,400 0.0%
LOAD_ATTR_MODULE 4,338,960 4,338,960 0.0%
POP_ITER 4,329,400 4,329,400 0.0%
ENTER_EXECUTOR 4,329,160 4,329,160 0.0%
BINARY_OP_EXTEND 4,309,560 4,309,560 0.0%
JUMP_FORWARD 3,572,100 3,572,100 0.0%
CALL_BUILTIN_CLASS 3,554,220 3,554,220 0.0%
CALL_LEN 3,195,760 3,195,760 0.0%
LOAD_CONST_MORTAL 2,761,020 2,761,020 0.0%
CALL_KW_PY 2,722,020 2,722,020 0.0%
CALL_NON_PY_GENERAL 2,622,060 2,622,060 0.0%
STORE_FAST_STORE_FAST 1,975,260 1,975,260 0.0%
UNARY_NOT 1,887,540 1,887,540 0.0%
CONTAINS_OP_SET 1,887,540 1,887,540 0.0%
CALL_LIST_APPEND 1,858,800 1,858,800 0.0%
FOR_ITER_RANGE 1,392,960 1,392,960 0.0%
CALL_METHOD_DESCRIPTOR_O 1,296,240 1,296,240 0.0%
CALL_METHOD_DESCRIPTOR_FAST 1,296,120 1,296,120 0.0%
LIST_APPEND 1,008,660 1,008,660 0.0%
STORE_FAST_LOAD_FAST 969,720 969,720 0.0%
CALL_BUILTIN_O 928,200 928,200 0.0%
BINARY_OP_MULTIPLY_INT 908,880 908,880 0.0%
BINARY_OP_ADD_FLOAT 837,900 837,900 0.0%
CALL_BUILTIN_FAST 837,900 837,900 0.0%
TO_BOOL_ALWAYS_TRUE 835,320 835,320 0.0%
COMPARE_OP_FLOAT 796,020 796,020 0.0%
NOT_TAKEN 150,800 150,800 0.0%
TO_BOOL_NONE 126,660 126,660 0.0%
COMPARE_OP 105,420 105,420 0.0%
BUILD_LIST 67,800 67,800 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 41,600 41,600 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%
NOP 19,200 19,200 0.0%
TO_BOOL_LIST 19,140 19,140 0.0%
BINARY_SUBSCR 2,300 2,300 0.0%
CALL 440 440 0.0%
BUILD_TUPLE 240 240 0.0%
LOAD_GLOBAL 240 240 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_ATTR_METHOD 60 60 0.0%
STORE_ATTR 20 20 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.

8,295,260 17.7% 8,295,260 17.7% 0.0%
hit

Specialized instructions that complete.

38,584,580 82.1% 38,584,580 82.1% 0.0%
miss

Specialized instructions that deopt.

102,140 0.2% 102,140 0.2% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 1,940 20.5% 1,940 20.5% 0.0%
Failure 7,540 79.5% 7,540 79.5% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
add different types 5,460 72.4% 5,460 72.4% 0.0%
xor int 2,000 26.5% 2,000 26.5% 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
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.

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.

20,452,280 100.0% 20,452,280 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,220 0.0% 41,220 0.0% 0.0%
hit

Specialized instructions that complete.

317,021,440 100.0% 317,021,440 100.0% 0.0%
miss

Specialized instructions that deopt.

1,060 0.0% 1,060 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 340 85.0% 340 85.0% 0.0%
Failure 60 15.0% 60 15.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
method 40 66.7% 40 66.7% 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.

56,925,520 100.0% 56,925,520 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_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,261,960 96.8% 44,261,960 96.8% 0.0%
miss

Specialized instructions that deopt.

1,440,280 3.2% 1,440,280 3.2% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 27,200 99.9% 27,200 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
Basic

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

878,813,700 53.0% 878,813,700 53.0% 0.0%
Not specialized

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

8,453,000 0.5% 8,453,000 0.5% 0.0%
Specialized hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

770,339,580 46.4% 770,339,580 46.4% 0.0%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

1,612,040 0.1% 1,612,040 0.1% 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,295,260 98.3% 8,295,260 98.3% 0.0%
COMPARE_OP 103,920 1.2% 103,920 1.2% 0.0%
LOAD_ATTR 41,220 0.5% 41,220 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%
CALL 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
TO_BOOL_BOOL 636,000 39.5% 636,000 39.5% 0.0%
TO_BOOL_INT 636,000 39.5% 636,000 39.5% 0.0%
BINARY_OP_ADD_INT 102,140 6.3% 102,140 6.3% 0.0%
TO_BOOL_NONE 84,520 5.2% 84,520 5.2% 0.0%
TO_BOOL_ALWAYS_TRUE 83,760 5.2% 83,760 5.2% 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_ATTR_METHOD_WITH_VALUES 1,060 0.1% 1,060 0.1% 0.0%
CALL_METHOD_DESCRIPTOR_FAST 60 0.0% 60 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 dunder misses 2 5 150.0%
Method cache collisions 31 24 -22.6%
Method cache misses 38 31 -18.4%
Method cache dunder hits 298 295 -1.0%
Method cache hits 42,562 42,569 0.0%
Immortal decrefs 46,221,379 3.9% 46,221,373 3.9% -0.0%
Frees 9,525,500 9,525,501 0.0%
Immortal increfs 41,156,020 3.8% 41,156,016 3.8% -0.0%
Mortal increfs 61,864,940 5.7% 61,864,936 5.7% -0.0%
Mortal decrefs 61,637,061 5.2% 61,637,059 5.2% -0.0%
Allocations from freelist 22,852,920 70.5% 22,852,920 70.5% 0.0%
Frees to freelist 22,851,500 22,851,500 0.0%
Allocations 9,571,160 29.5% 9,571,160 29.5% 0.0%
Allocations to 512 bytes 9,510,680 29.3% 9,510,680 29.3% 0.0%
Allocations to 4 kbytes 48,480 0.1% 48,480 0.1% 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 667,546,780 61.6% 667,546,780 61.6% 0.0%
Interpreter mortal decrefs 699,957,900 59.4% 699,957,900 59.4% 0.0%
Interpreter immortal increfs 312,363,480 28.8% 312,363,480 28.8% 0.0%
Interpreter immortal decrefs 369,614,360 31.4% 369,614,360 31.4% 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,552,180 10,240 31,560 20 22,100 2,552,180 10,240 31,560
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.

4,600 4,600 0.0%
Traces created

The number of traces that were successfully created.

280 6.1% 280 6.1% 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.

180 3.9% 180 3.9% 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.

160 3.5% 160 3.5% 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%
Unknown callee

A trace is abandoned because the target of a call is unknown.

4,160 90.4% 4,160 90.4% 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

6,188,860 6,188,860 0.0%
Uops executed

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

301,432,560 4,870.6% 301,432,560 4,870.6% 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.

280 280 0.0%
Optimizer successes

The number of traces that were successfully optimized.

280 100.0% 280 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
Total memory size

The total size of the memory allocated for the JIT traces

2,457,600 2,457,600 0.0%
Code size

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

1,562,640 63.6% 1,562,640 63.6% 0.0%
Trampoline size

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

0 0.0% 0 0.0%
Data size

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

245,280 10.0% 245,280 10.0% 0.0%
Padding size

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

649,680 26.4% 649,680 26.4% 0.0%
Freed memory size

The size of the memory freed from the JIT traces

245,760 10.0% 245,760 10.0% 0.0%

JIT trace total memory histogram

JIT trace total memory histogram
Size (bytes) Base Count Base Ratio Head Count Head Ratio Change
<= 4,096 120 42.9% 120 42.9% 0.0%
<= 8,192 40 14.3% 40 14.3% 0.0%
<= 16,384 120 42.9% 120 42.9% 0.0%

Trace length histogram

trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 8 40 14.3% 40 14.3% 0.0%
<= 16 80 28.6% 80 28.6% 0.0%
<= 32 40 14.3% 40 14.3% 0.0%
<= 64 120 42.9% 120 42.9% 0.0%

Optimized trace length histogram

optimized trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 4 20 7.1% 20 7.1% 0.0%
<= 8 20 7.1% 20 7.1% 0.0%
<= 16 80 28.6% 80 28.6% 0.0%
<= 32 80 28.6% 80 28.6% 0.0%
<= 64 80 28.6% 80 28.6% 0.0%

Trace run length histogram

trace run length histogram

Uop execution stats

uop execution stats
Name Base Count Head Count Change
_SET_IP 39,302,900 39,302,900 0.0%
_CHECK_VALIDITY 34,969,720 34,969,720 0.0%
_MAKE_WARM 13,631,860 13,631,860 0.0%
_CHECK_PERIODIC 12,089,200 12,089,200 0.0%
_GUARD_NOT_EXHAUSTED_LIST 11,275,480 11,275,480 0.0%
_ITER_CHECK_LIST 11,275,480 11,275,480 0.0%
_CHECK_MANAGED_OBJECT_HAS_VALUES 10,352,160 10,352,160 0.0%
_GUARD_TYPE_VERSION 10,352,160 10,352,160 0.0%
_LOAD_ATTR_INSTANCE_VALUE 10,352,160 10,352,160 0.0%
_ITER_NEXT_LIST 9,461,220 9,461,220 0.0%
_COMPARE_OP_INT 7,996,300 7,996,300 0.0%
_JUMP_TO_TOP 7,443,000 7,443,000 0.0%
_GUARD_BOTH_INT 7,330,660 7,330,660 0.0%
_GUARD_GLOBALS_VERSION_PUSH_KEYS 6,882,760 6,882,760 0.0%
_LOAD_GLOBAL_MODULE_FROM_KEYS 6,882,760 6,882,760 0.0%
_CHECK_VALIDITY_AND_SET_IP 6,346,780 6,346,780 0.0%
_EXIT_TRACE 6,188,860 6,188,860 0.0%
_START_EXECUTOR 6,188,860 6,188,860 0.0%
_LOAD_FAST_2 5,667,660 5,667,660 0.0%
_STORE_FAST_2 5,615,740 5,615,740 0.0%
_LOAD_FAST_3 5,478,680 5,478,680 0.0%
_STORE_FAST_3 5,085,660 5,085,660 0.0%
_LOAD_FAST_1 4,762,060 4,762,060 0.0%
_GUARD_DORV_NO_DICT 4,149,100 4,149,100 0.0%
_GUARD_TYPE_VERSION_AND_LOCK 4,149,100 4,149,100 0.0%
_STORE_ATTR_INSTANCE_VALUE 4,149,100 4,149,100 0.0%
_GUARD_IS_TRUE_POP 4,103,820 4,103,820 0.0%
_GUARD_IS_FALSE_POP 3,892,480 3,892,480 0.0%
_LOAD_FAST_4 2,854,980 2,854,980 0.0%
_LOAD_CONST_INLINE_BORROW 2,653,360 2,653,360 0.0%
_LOAD_SMALL_INT_1 2,445,900 2,445,900 0.0%
_COPY 2,209,900 2,209,900 0.0%
_SWAP 2,209,900 2,209,900 0.0%
_LOAD_FAST_0 2,209,900 2,209,900 0.0%
_STORE_FAST_1 1,934,400 1,934,400 0.0%
_STORE_FAST_4 1,868,200 1,868,200 0.0%
_BINARY_OP_ADD_INT 1,753,100 1,753,100 0.0%
_GUARD_NOS_INT 1,736,460 1,736,460 0.0%
_BINARY_OP 1,610,480 1,610,480 0.0%
_POP_TOP 1,602,660 1,602,660 0.0%
_GUARD_NOT_EXHAUSTED_RANGE 976,860 976,860 0.0%
_ITER_CHECK_RANGE 976,860 976,860 0.0%
_BINARY_SUBSCR_LIST_INT 969,600 969,600 0.0%
_LIST_APPEND 964,800 964,800 0.0%
_ITER_NEXT_RANGE 964,800 964,800 0.0%
_LOAD_FAST_6 954,660 954,660 0.0%
_STORE_FAST_6 954,660 954,660 0.0%
_TO_BOOL_NONE 742,380 742,380 0.0%
_LOAD_FAST_5 694,200 694,200 0.0%
_GUARD_TOS_INT 665,640 665,640 0.0%
_STORE_FAST_5 627,460 627,460 0.0%
_PUSH_NULL 229,880 229,880 0.0%
_CALL_LEN 229,880 229,880 0.0%
_CHECK_FUNCTION 229,880 229,880 0.0%
_GUARD_GLOBALS_VERSION 229,880 229,880 0.0%
_LOAD_GLOBAL_BUILTINS 229,880 229,880 0.0%
_GET_ITER 163,140 163,140 0.0%
_LOAD_SMALL_INT_0 163,140 163,140 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-08