Skip to content

Latest commit

 

History

History
3915 lines (3666 loc) · 80.4 KB

bm-20241025-azure-x86_64-brandtbucher-justin_no_externs-3.14.0a1+-64b198a-pystats-go-vs-base.md

File metadata and controls

3915 lines (3666 loc) · 80.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 150,427,360 150,427,360 0.0%
LOAD_ATTR_INSTANCE_VALUE 102,217,540 102,217,540 0.0%
STORE_FAST 47,045,460 47,045,460 0.0%
POP_JUMP_IF_FALSE 41,669,300 41,669,300 0.0%
STORE_ATTR_INSTANCE_VALUE 37,656,660 37,656,660 0.0%
ENTER_EXECUTOR 33,828,620 33,828,620 0.0%
RETURN_VALUE 30,634,180 30,634,180 0.0%
LOAD_CONST 30,238,020 30,238,020 0.0%
LOAD_FAST_LOAD_FAST 28,602,400 28,602,400 0.0%
COMPARE_OP_INT 27,709,720 27,709,720 0.0%
COPY 25,888,400 25,888,400 0.0%
TO_BOOL_BOOL 21,886,100 21,886,100 0.0%
LOAD_GLOBAL_MODULE 21,137,400 21,137,400 0.0%
SWAP 18,385,940 18,385,940 0.0%
RETURN_CONST 15,894,940 15,894,940 0.0%
LOAD_ATTR_METHOD_WITH_VALUES 15,205,840 15,205,840 0.0%
POP_TOP 14,646,920 14,646,920 0.0%
CALL_PY_EXACT_ARGS 13,198,140 13,198,140 0.0%
RESUME_CHECK 12,946,000 12,946,000 0.0%
BINARY_SUBSCR_LIST_INT 12,853,320 12,853,320 0.0%
BINARY_OP_SUBTRACT_INT 10,506,520 10,506,520 0.0%
POP_JUMP_IF_TRUE 9,954,300 9,954,300 0.0%
STORE_SUBSCR_LIST_INT 8,466,420 8,466,420 0.0%
BINARY_OP 8,039,280 8,039,280 0.0%
BINARY_OP_ADD_INT 7,883,100 7,883,100 0.0%
GET_ITER 4,155,780 4,155,780 0.0%
FOR_ITER_LIST 4,096,820 4,096,820 0.0%
JUMP_FORWARD 3,197,100 3,197,100 0.0%
LOAD_ATTR_METHOD_NO_DICT 3,114,320 3,114,320 0.0%
STORE_GLOBAL 2,583,960 2,583,960 0.0%
CALL_PY_GENERAL 2,030,100 2,030,100 0.0%
TO_BOOL_INT 1,916,660 1,916,660 0.0%
STORE_FAST_STORE_FAST 1,897,740 1,897,740 0.0%
LOAD_GLOBAL_BUILTIN 1,828,720 1,828,720 0.0%
CALL_LIST_APPEND 1,800,620 1,800,620 0.0%
CALL_LEN 1,760,160 1,760,160 0.0%
CALL_METHOD_DESCRIPTOR_FAST 1,291,980 1,291,980 0.0%
CALL_KW_PY 834,200 834,200 0.0%
PUSH_NULL 78,860 78,860 0.0%
LIST_APPEND 69,480 69,480 0.0%
CALL_BUILTIN_CLASS 67,840 67,840 0.0%
COMPARE_OP 66,180 66,180 0.0%
BUILD_LIST 55,520 55,520 0.0%
LOAD_ATTR_MODULE 52,160 52,160 0.0%
CALL_BUILTIN_O 50,740 50,740 0.0%
EXIT_INIT_CHECK 46,140 46,140 0.0%
BINARY_OP_MULTIPLY_INT 30,660 30,660 0.0%
LOAD_FAST_AND_CLEAR 28,080 28,080 0.0%
FOR_ITER_RANGE 28,080 28,080 0.0%
TO_BOOL_NONE 26,960 26,960 0.0%
TO_BOOL_ALWAYS_TRUE 26,160 26,160 0.0%
CALL_ALLOC_AND_ENTER_INIT 24,420 24,420 0.0%
STORE_FAST_LOAD_FAST 24,060 24,060 0.0%
LOAD_ATTR 22,100 22,100 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 21,720 21,720 0.0%
BINARY_OP_ADD_FLOAT 15,580 15,580 0.0%
CALL_BUILTIN_FAST 15,580 15,580 0.0%
CALL_NON_PY_GENERAL 12,360 12,360 0.0%
NOP 12,060 12,060 0.0%
TO_BOOL_LIST 12,000 12,000 0.0%
IS_OP 8,760 8,760 0.0%
POP_JUMP_IF_NOT_NONE 8,760 8,760 0.0%
CALL_BOUND_METHOD_GENERAL 8,760 8,760 0.0%
UNPACK_SEQUENCE_TWO_TUPLE 3,380 3,380 0.0%
FOR_ITER_TUPLE 3,320 3,320 0.0%
BINARY_SUBSCR 2,300 2,300 0.0%
JUMP_BACKWARD 1,180 1,180 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%
UNARY_NOT 80 80 0.0%
CALL_METHOD_DESCRIPTOR_O 80 80 0.0%
CONTAINS_OP_SET 80 80 0.0%
MAKE_FUNCTION 60 60 0.0%
CALL_FUNCTION_EX 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,036,900 18.9% 8,036,900 18.9% 0.0%
hit

Specialized instructions that complete.

34,524,640 81.1% 34,524,640 81.1% 0.0%
miss

Specialized instructions that deopt.

3,400 0.0% 3,400 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 80 3.3% 80 3.3% 0.0%
Failure 2,360 96.7% 2,360 96.7% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
xor 1,960 83.1% 1,960 83.1% 0.0%
add different types 200 8.5% 200 8.5% 0.0%
floor divide 60 2.5% 60 2.5% 0.0%
remainder 60 2.5% 60 2.5% 0.0%
multiply different types 40 1.7% 40 1.7% 0.0%
true divide different types 40 1.7% 40 1.7% 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.

65,460 0.1% 65,460 0.1% 0.0%
hit

Specialized instructions that complete.

79,398,100 99.9% 79,398,100 99.9% 0.0%
miss

Specialized instructions that deopt.

4,240 0.0% 4,240 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 80 10.0% 80 10.0% 0.0%
Failure 720 90.0% 720 90.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
big int 640 88.9% 640 88.9% 0.0%
long float 40 5.6% 40 5.6% 0.0%
bool 20 2.8% 20 2.8% 0.0%
float long 20 2.8% 20 2.8% 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,128,220 100.0% 4,128,220 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.

21,720 0.0% 21,720 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.

51,938,620 100.0% 51,938,620 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.

42,381,440 98.9% 42,381,440 98.9% 0.0%
miss

Specialized instructions that deopt.

483,920 1.1% 483,920 1.1% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 9,140 99.8% 9,140 99.8% 0.0%
Failure 20 0.2% 20 0.2% 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.

459,384,180 59.0% 459,384,180 59.0% 0.0%
Not specialized

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

8,130,740 1.0% 8,130,740 1.0% 0.0%
Specialized hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

310,204,540 39.9% 310,204,540 39.9% 0.0%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

536,040 0.1% 536,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,036,900 98.9% 8,036,900 98.9% 0.0%
COMPARE_OP 65,460 0.8% 65,460 0.8% 0.0%
LOAD_ATTR 21,720 0.3% 21,720 0.3% 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%
BINARY_SLICE 0 0.0% 0 0.0%
STORE_SLICE 0 0.0% 0 0.0%
CACHE 0 0.0% 0 0.0%
EXIT_INIT_CHECK 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 232,140 43.3% 232,140 43.3% 0.0%
TO_BOOL_INT 232,140 43.3% 232,140 43.3% 0.0%
BINARY_SUBSCR_LIST_INT 43,040 8.0% 43,040 8.0% 0.0%
TO_BOOL_ALWAYS_TRUE 10,240 1.9% 10,240 1.9% 0.0%
TO_BOOL_NONE 9,400 1.8% 9,400 1.8% 0.0%
COMPARE_OP_INT 4,240 0.8% 4,240 0.8% 0.0%
BINARY_OP_ADD_INT 3,400 0.6% 3,400 0.6% 0.0%
LOAD_ATTR_METHOD_WITH_VALUES 1,060 0.2% 1,060 0.2% 0.0%
RESUME 320 0.1% 320 0.1% 0.0%
RESUME_CHECK 320 0.1% 320 0.1% 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 5 4 -20.0%
Method cache collisions 42 37 -11.9%
Method cache misses 47 42 -10.6%
Method cache dunder hits 295 296 0.3%
Method cache hits 42,553 42,558 0.0%
Frees 22,384,067 22,384,063 -0.0%
Immortal increfs 223,325,697 17.9% 223,325,690 17.9% -0.0%
Mortal decrefs 364,821,414 27.7% 364,821,406 27.7% -0.0%
Immortal decrefs 227,976,550 17.3% 227,976,546 17.3% -0.0%
Mortal increfs 522,696,407 41.9% 522,696,402 41.9% -0.0%
Allocations from freelist 9,996,860 30.8% 9,996,860 30.8% 0.0%
Frees to freelist 9,995,560 9,995,560 0.0%
Allocations 22,429,040 69.2% 22,429,040 69.2% 0.0%
Allocations to 512 bytes 22,367,800 69.0% 22,367,800 69.0% 0.0%
Allocations to 4 kbytes 49,180 0.2% 49,180 0.2% 0.0%
Allocations over 4 kbytes 12,060 0.0% 12,060 0.0% 0.0%
Inline values 46,140 46,140 0.0%
Interpreter mortal increfs 314,419,160 25.2% 314,419,160 25.2% 0.0%
Interpreter mortal decrefs 504,479,800 38.3% 504,479,800 38.3% 0.0%
Interpreter immortal increfs 188,393,040 15.1% 188,393,040 15.1% 0.0%
Interpreter immortal decrefs 220,625,940 16.7% 220,625,940 16.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 Head Collections Head Objects collected Head Object visits
0 0 0 0 0 0 0
1 20 22,100 2,924,680 20 22,100 2,924,680
2 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.

10,440 10,440 0.0%
Traces created

The number of traces that were successfully created.

1,300 12.5% 1,300 12.5% 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.

9,320 89.3% 9,320 89.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 abandoced because it it too short.

9,140 87.5% 9,140 87.5% 0.0%
Inner loop found

A trace is truncated because it has an inner loop

60 0.6% 60 0.6% 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.

60 0.6% 60 0.6% 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

84,389,640 84,389,640 0.0%
Uops executed

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

2,134,798,920 2,529.7% 2,134,798,920 2,529.7% 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.

1,300 1,300 0.0%
Optimizer successes

The number of traces that were successfully optimized.

1,300 100.0% 1,300 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 180 13.8% 180 13.8% 0.0%
<= 16 120 9.2% 120 9.2% 0.0%
<= 32 120 9.2% 120 9.2% 0.0%
<= 64 160 12.3% 160 12.3% 0.0%
<= 128 320 24.6% 320 24.6% 0.0%
<= 256 340 26.2% 340 26.2% 0.0%
<= 512 60 4.6% 60 4.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 60 4.6% 60 4.6% 0.0%
<= 8 160 12.3% 160 12.3% 0.0%
<= 16 140 10.8% 140 10.8% 0.0%
<= 32 180 13.8% 180 13.8% 0.0%
<= 64 60 4.6% 60 4.6% 0.0%
<= 128 640 49.2% 640 49.2% 0.0%
<= 256 0 0.0% 0 0.0%
<= 512 60 4.6% 60 4.6% 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
_CHECK_MANAGED_OBJECT_HAS_VALUES 150,771,920 150,771,920 0.0%
_LOAD_ATTR_INSTANCE_VALUE_0 150,771,920 150,771,920 0.0%
_GUARD_TYPE_VERSION 113,513,580 113,513,580 0.0%
_LOAD_FAST_2 93,744,880 93,744,880 0.0%
_LOAD_FAST_0 93,530,820 93,530,820 0.0%
_MAKE_WARM 91,338,600 91,338,600 0.0%
_SET_IP 87,742,180 87,742,180 0.0%
_START_EXECUTOR 84,389,640 84,389,640 0.0%
_EXIT_TRACE 83,908,780 83,908,780 0.0%
_GUARD_BOTH_INT 55,152,220 55,152,220 0.0%
_CHECK_VALIDITY 53,077,800 53,077,800 0.0%
_COMPARE_OP_INT 51,171,260 51,171,260 0.0%
_STORE_FAST_2 45,471,640 45,471,640 0.0%
_LOAD_FAST_1 45,459,140 45,459,140 0.0%
_GUARD_IS_TRUE_POP 43,652,760 43,652,760 0.0%
_GUARD_KEYS_VERSION 40,429,680 40,429,680 0.0%
_GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 40,429,680 40,429,680 0.0%
_LOAD_ATTR_METHOD_WITH_VALUES 39,983,800 39,983,800 0.0%
_PUSH_FRAME 39,216,220 39,216,220 0.0%
_SAVE_RETURN_OFFSET 39,194,500 39,194,500 0.0%
_CHECK_FUNCTION_VERSION 37,274,220 37,274,220 0.0%
_CHECK_PERIODIC 36,486,240 36,486,240 0.0%
_CHECK_FUNCTION_EXACT_ARGS 32,971,500 32,971,500 0.0%
_GUARD_GLOBALS_VERSION_PUSH_KEYS 28,972,500 28,972,500 0.0%
_LOAD_GLOBAL_MODULE_FROM_KEYS 28,972,500 28,972,500 0.0%
_GUARD_NOT_EXHAUSTED_LIST 26,189,380 26,189,380 0.0%
_ITER_CHECK_LIST 26,189,380 26,189,380 0.0%
_INIT_CALL_PY_EXACT_ARGS_1 26,186,440 26,186,440 0.0%
_RESUME_CHECK 26,031,520 26,031,520 0.0%
_GUARD_IS_FALSE_POP 25,563,660 25,563,660 0.0%
_LOAD_FAST 25,257,200 25,257,200 0.0%
_ITER_NEXT_LIST 21,218,460 21,218,460 0.0%
_LOAD_FAST_3 20,143,340 20,143,340 0.0%
_POP_TOP 19,335,660 19,335,660 0.0%
_LOAD_CONST_INLINE_BORROW 18,630,920 18,630,920 0.0%
_CHECK_STACK_SPACE 16,957,320 16,957,320 0.0%
_TIER2_RESUME_CHECK 16,334,680 16,334,680 0.0%
_STORE_FAST 15,654,820 15,654,820 0.0%
_STORE_FAST_3 12,591,300 12,591,300 0.0%
_COPY 11,427,160 11,427,160 0.0%
_BINARY_OP_ADD_INT 9,832,160 9,832,160 0.0%
_CHECK_STACK_SPACE_OPERAND 9,352,400 9,352,400 0.0%
_TO_BOOL_INT 9,319,060 9,319,060 0.0%
_GUARD_NOS_INT 9,114,660 9,114,660 0.0%
_TO_BOOL_BOOL 8,942,800 8,942,800 0.0%
_GUARD_DORV_NO_DICT 8,932,680 8,932,680 0.0%
_STORE_ATTR_INSTANCE_VALUE 8,932,680 8,932,680 0.0%
_RETURN_VALUE 8,828,920 8,828,920 0.0%
_BINARY_SUBSCR_LIST_INT 7,843,740 7,843,740 0.0%
_JUMP_TO_TOP 6,948,960 6,948,960 0.0%
_INIT_CALL_PY_EXACT_ARGS_0 6,615,700 6,615,700 0.0%
_BINARY_OP 6,025,640 6,025,640 0.0%
_LOAD_FAST_4 5,704,900 5,704,900 0.0%
_GUARD_GLOBALS_VERSION 5,151,860 5,151,860 0.0%
_LOAD_GLOBAL_BUILTINS 5,151,860 5,151,860 0.0%
_STORE_FAST_1 5,092,620 5,092,620 0.0%
_LOAD_FAST_6 4,828,460 4,828,460 0.0%
_BINARY_OP_SUBTRACT_INT 4,559,420 4,559,420 0.0%
_PY_FRAME_GENERAL 4,335,180 4,335,180 0.0%
_PUSH_NULL 4,309,480 4,309,480 0.0%
_CHECK_VALIDITY_AND_SET_IP 4,291,600 4,291,600 0.0%
_CHECK_ATTR_MODULE 4,286,800 4,286,800 0.0%
_LOAD_ATTR_MODULE 4,286,800 4,286,800 0.0%
_CHECK_FUNCTION 3,847,700 3,847,700 0.0%
_SWAP 3,737,680 3,737,680 0.0%
_STORE_GLOBAL 3,563,640 3,563,640 0.0%
_CALL_BUILTIN_CLASS 3,486,380 3,486,380 0.0%
_LOAD_FAST_5 3,195,400 3,195,400 0.0%
_CALL_NON_PY_GENERAL 2,609,700 2,609,700 0.0%
_CHECK_IS_NOT_PY_CALLABLE 2,609,700 2,609,700 0.0%
_GET_ITER 2,596,800 2,596,800 0.0%
_STORE_FAST_4 2,449,460 2,449,460 0.0%
_GUARD_NOT_EXHAUSTED_RANGE 2,341,740 2,341,740 0.0%
_ITER_CHECK_RANGE 2,341,740 2,341,740 0.0%
_ITER_NEXT_RANGE 2,319,780 2,319,780 0.0%
_LOAD_FAST_7 2,183,200 2,183,200 0.0%
_LOAD_CONST_INLINE 1,919,540 1,919,540 0.0%
_LIST_APPEND 1,903,980 1,903,980 0.0%
_CHECK_FUNCTION_VERSION_KW 1,887,820 1,887,820 0.0%
_PY_FRAME_KW 1,887,820 1,887,820 0.0%
_UNARY_NOT 1,887,460 1,887,460 0.0%
_CONTAINS_OP_SET 1,887,460 1,887,460 0.0%
_CALL_LEN 1,665,480 1,665,480 0.0%
_TO_BOOL_NONE 1,563,880 1,563,880 0.0%
_GUARD_TOS_INT 1,527,460 1,527,460 0.0%
_LOAD_ATTR_METHOD_NO_DICT 1,390,120 1,390,120 0.0%
_CALL_METHOD_DESCRIPTOR_O 1,296,160 1,296,160 0.0%
_STORE_FAST_5 1,254,520 1,254,520 0.0%
_STORE_FAST_6 1,229,560 1,229,560 0.0%
_BINARY_OP_MULTIPLY_INT 878,220 878,220 0.0%
_CALL_BUILTIN_O 877,460 877,460 0.0%
_GUARD_BOTH_FLOAT 833,900 833,900 0.0%
_BINARY_OP_ADD_FLOAT 822,320 822,320 0.0%
_CALL_BUILTIN_FAST 822,320 822,320 0.0%
_REPLACE_WITH_TRUE 561,200 561,200 0.0%
_GUARD_TOS_FLOAT 545,900 545,900 0.0%
_COMPARE_OP_FLOAT 534,320 534,320 0.0%
_DEOPT 459,140 459,140 0.0%
_COMPARE_OP 318,540 318,540 0.0%
_STORE_FAST_7 295,740 295,740 0.0%
_TO_BOOL 254,260 254,260 0.0%
_CHECK_PEP_523 175,420 175,420 0.0%
_INIT_CALL_PY_EXACT_ARGS_2 169,360 169,360 0.0%
_LOAD_CONST 80,500 80,500 0.0%
_CALL_LIST_APPEND 58,180 58,180 0.0%
_GUARD_NOT_EXHAUSTED_TUPLE 45,280 45,280 0.0%
_ITER_CHECK_TUPLE 45,280 45,280 0.0%
_UNPACK_SEQUENCE_TWO_TUPLE 35,560 35,560 0.0%
_ITER_NEXT_TUPLE 35,560 35,560 0.0%
_IS_OP 32,460 32,460 0.0%
_CHECK_METHOD_VERSION 32,460 32,460 0.0%
_EXPAND_METHOD 32,460 32,460 0.0%
_GUARD_IS_NONE_POP 32,460 32,460 0.0%
_LOAD_CONST_INLINE_WITH_NULL 32,460 32,460 0.0%
_CALL_METHOD_DESCRIPTOR_NOARGS 31,620 31,620 0.0%
_STORE_SUBSCR_LIST_INT 30,660 30,660 0.0%
_CHECK_AND_ALLOCATE_OBJECT 21,720 21,720 0.0%
_CREATE_INIT_FRAME 21,720 21,720 0.0%
_DYNAMIC_EXIT 21,720 21,720 0.0%
_LOAD_ATTR 19,500 19,500 0.0%
_BUILD_LIST 12,280 12,280 0.0%
_TO_BOOL_LIST 7,140 7,140 0.0%
_LOAD_FAST_AND_CLEAR 5,880 5,880 0.0%
_CALL_METHOD_DESCRIPTOR_FAST 4,140 4,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: 2024-10-25