Skip to content

Latest commit

 

History

History
4110 lines (3844 loc) · 83.9 KB

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

File metadata and controls

4110 lines (3844 loc) · 83.9 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 186,517,040 186,517,040 0.0%
LOAD_FAST_LOAD_FAST 66,067,860 66,067,860 0.0%
LOAD_CONST 55,442,940 55,442,940 0.0%
POP_JUMP_IF_FALSE 55,440,340 55,440,340 0.0%
STORE_ATTR_SLOT 50,949,060 50,949,060 0.0%
RESUME_CHECK 46,490,240 46,490,240 0.0%
POP_TOP 45,935,640 45,935,640 0.0%
LOAD_ATTR_METHOD_WITH_VALUES 44,253,160 44,253,160 0.0%
STORE_FAST 39,774,900 39,774,900 0.0%
RETURN_CONST 35,836,980 35,836,980 0.0%
RETURN_VALUE 34,157,280 34,157,280 0.0%
TO_BOOL_BOOL 30,242,380 30,242,380 0.0%
LOAD_ATTR_INSTANCE_VALUE 29,136,460 29,136,460 0.0%
LOAD_DEREF 28,012,620 28,012,620 0.0%
CALL_PY_EXACT_ARGS 26,892,340 26,892,340 0.0%
INTERPRETER_EXIT 26,314,380 26,314,380 0.0%
ENTER_EXECUTOR 22,403,700 22,403,700 0.0%
LOAD_ATTR_SLOT 22,400,160 22,400,160 0.0%
TO_BOOL_NONE 17,915,820 17,915,820 0.0%
CALL_NON_PY_GENERAL 15,683,160 15,683,160 0.0%
POP_JUMP_IF_NOT_NONE 15,678,240 15,678,240 0.0%
LOAD_GLOBAL_MODULE 15,127,020 15,127,020 0.0%
PUSH_NULL 14,001,360 14,001,360 0.0%
LOAD_ATTR_MODULE 13,440,420 13,440,420 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 11,263,960 11,263,960 0.0%
LOAD_ATTR_METHOD_NO_DICT 11,202,420 11,202,420 0.0%
STORE_DEREF 8,961,600 8,961,600 0.0%
CALL_FUNCTION_EX 7,838,340 7,838,340 0.0%
CALL_METHOD_DESCRIPTOR_O 7,278,480 7,278,480 0.0%
COMPARE_OP_INT 6,721,200 6,721,200 0.0%
POP_JUMP_IF_NONE 6,718,920 6,718,920 0.0%
BINARY_OP_ADD_INT 6,718,380 6,718,380 0.0%
RETURN_GENERATOR 6,158,700 6,158,700 0.0%
POP_JUMP_IF_TRUE 4,483,260 4,483,260 0.0%
LOAD_ATTR 3,925,400 3,925,400 0.0%
CALL_KW_NON_PY 3,922,920 3,922,920 0.0%
COPY_FREE_VARS 3,919,680 3,919,680 0.0%
CALL_LIST_APPEND 3,919,020 3,919,020 0.0%
JUMP_FORWARD 3,361,980 3,361,980 0.0%
STORE_ATTR 3,361,300 3,361,300 0.0%
IS_OP 3,359,520 3,359,520 0.0%
END_SEND 3,359,340 3,359,340 0.0%
GET_AWAITABLE 3,359,340 3,359,340 0.0%
STORE_SUBSCR_DICT 3,359,220 3,359,220 0.0%
LIST_APPEND 3,359,160 3,359,160 0.0%
SEND_GEN 2,799,600 2,799,600 0.0%
MAKE_CELL 2,799,420 2,799,420 0.0%
GET_ITER 2,247,000 2,247,000 0.0%
LOAD_GLOBAL_BUILTIN 2,246,520 2,246,520 0.0%
BUILD_LIST 2,241,900 2,241,900 0.0%
NOP 1,127,160 1,127,160 0.0%
SWAP 1,123,740 1,123,740 0.0%
STORE_ATTR_INSTANCE_VALUE 1,122,660 1,122,660 0.0%
SEND 1,120,000 1,120,000 0.0%
FOR_ITER_LIST 566,100 566,100 0.0%
CALL_PY_GENERAL 564,180 564,180 0.0%
TO_BOOL 561,940 561,940 0.0%
COPY 561,600 561,600 0.0%
CALL_BUILTIN_CLASS 561,600 561,600 0.0%
FOR_ITER_RANGE 561,060 561,060 0.0%
BUILD_TUPLE 560,460 560,460 0.0%
LOAD_SUPER_ATTR_METHOD 560,340 560,340 0.0%
BUILD_MAP 560,160 560,160 0.0%
MAKE_FUNCTION 560,100 560,100 0.0%
SET_FUNCTION_ATTRIBUTE 560,100 560,100 0.0%
CALL_BUILTIN_FAST 560,100 560,100 0.0%
JUMP_BACKWARD_NO_INTERRUPT 559,980 559,980 0.0%
YIELD_VALUE 559,980 559,980 0.0%
BINARY_OP_SUBTRACT_INT 559,920 559,920 0.0%
CALL_KW_PY 559,920 559,920 0.0%
CALL_TYPE_1 559,920 559,920 0.0%
CONTAINS_OP_DICT 559,920 559,920 0.0%
CONTAINS_OP_SET 559,920 559,920 0.0%
LOAD_FAST_AND_CLEAR 559,860 559,860 0.0%
FOR_ITER_TUPLE 559,860 559,860 0.0%
CALL_LEN 3,600 3,600 0.0%
CALL 2,420 2,420 0.0%
TO_BOOL_LIST 2,400 2,400 0.0%
TO_BOOL_INT 1,560 1,560 0.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 1,380 1,380 0.0%
LOAD_GLOBAL 1,340 1,340 0.0%
CALL_INTRINSIC_1 1,200 1,200 0.0%
LIST_EXTEND 1,200 1,200 0.0%
BINARY_OP_ADD_FLOAT 1,200 1,200 0.0%
BINARY_OP 540 540 0.0%
CALL_ISINSTANCE 420 420 0.0%
JUMP_BACKWARD 300 300 0.0%
FOR_ITER 240 240 0.0%
LOAD_ATTR_CLASS 240 240 0.0%
UNPACK_SEQUENCE_TWO_TUPLE 240 240 0.0%
STORE_FAST_STORE_FAST 180 180 0.0%
CALL_METHOD_DESCRIPTOR_FAST 180 180 0.0%
COMPARE_OP 160 160 0.0%
LOAD_SUPER_ATTR 160 160 0.0%
CHECK_EXC_MATCH 120 120 0.0%
EXIT_INIT_CHECK 120 120 0.0%
POP_EXCEPT 120 120 0.0%
PUSH_EXC_INFO 120 120 0.0%
UNARY_INVERT 120 120 0.0%
UNARY_NOT 120 120 0.0%
BINARY_SUBSCR_DICT 120 120 0.0%
CALL_ALLOC_AND_ENTER_INIT 120 120 0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS 120 120 0.0%
CALL_BUILTIN_O 120 120 0.0%
UNPACK_SEQUENCE 80 80 0.0%
DICT_MERGE 60 60 0.0%
IMPORT_NAME 60 60 0.0%
RAISE_VARARGS 60 60 0.0%
RERAISE 60 60 0.0%
BINARY_OP_SUBTRACT_FLOAT 60 60 0.0%
BINARY_SUBSCR_GETITEM 60 60 0.0%
BINARY_SUBSCR_TUPLE_INT 60 60 0.0%
CALL_BOUND_METHOD_EXACT_ARGS 60 60 0.0%
CALL_BOUND_METHOD_GENERAL 60 60 0.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 60 60 0.0%
BINARY_SUBSCR 40 40 0.0%
CALL_KW 40 40 0.0%
STORE_SUBSCR 20 20 0.0%
CONTAINS_OP 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.

360 0.0% 360 0.0% 0.0%
hit

Specialized instructions that complete.

10,078,860 100.0% 10,078,860 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 60 33.3% 60 33.3% 0.0%
Failure 120 66.7% 120 66.7% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
and int 80 66.7% 80 66.7% 0.0%
or 40 33.3% 40 33.3% 0.0%

BINARY_SUBSCR

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

Specialized instructions that complete.

240 85.7% 240 85.7% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 40 100.0% 40 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.

87,916,980 96.2% 87,916,980 96.2% 0.0%
miss

Specialized instructions that deopt.

3,424,120 3.7% 3,424,120 3.7% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 67,060 100.0% 67,060 100.0% 0.0%
Failure 0 0.0% 0 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
init not python 20 20 / 0 !! 20 20 / 0 !! 0.0%
init not inline values 20 20 / 0 !! 20 20 / 0 !! 0.0%

CALL_KW

specialization stats for CALL_KW family

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.

120 0.0% 120 0.0% 0.0%
hit

Specialized instructions that complete.

6,721,200 100.0% 6,721,200 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
bool 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
hit

Specialized instructions that complete.

6,718,440 100.0% 6,718,440 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%

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.

180 0.0% 180 0.0% 0.0%
hit

Specialized instructions that complete.

1,687,020 100.0% 1,687,020 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
dict items 40 100.0% 40 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.

3,921,300 1.8% 3,921,300 1.8% 0.0%
hit

Specialized instructions that complete.

218,940,480 98.2% 218,940,480 98.2% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 2,820 68.8% 2,820 68.8% 0.0%
Failure 1,280 31.2% 1,280 31.2% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
overriding descriptor 940 73.4% 940 73.4% 0.0%
method 260 20.3% 260 20.3% 0.0%
metaclass attribute 20 1.6% 20 1.6% 0.0%

LOAD_GLOBAL

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

Specialized instructions that deopt.

60 0.0% 60 0.0% 0.0%
hit

Specialized instructions that complete.

17,373,480 100.0% 17,373,480 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 1,340 100.0% 1,340 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.

560,340 100.0% 560,340 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 160 100.0% 160 100.0% 0.0%
Failure 0 0.0% 0 0.0%

SEND

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

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

1,119,720 28.6% 1,119,720 28.6% 0.0%
hit

Specialized instructions that complete.

2,799,600 71.4% 2,799,600 71.4% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 0 0.0% 0 0.0%
Failure 280 100.0% 280 100.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 280 100.0% 280 100.0% 0.0%

STORE_ATTR

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

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

3,359,460 6.1% 3,359,460 6.1% 0.0%
hit

Specialized instructions that complete.

52,071,720 93.9% 52,071,720 93.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 960 52.2% 960 52.2% 0.0%
Failure 880 47.8% 880 47.8% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
overriding descriptor 840 95.5% 840 95.5% 0.0%
overridden 40 4.5% 40 4.5% 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.

3,359,220 100.0% 3,359,220 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%

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.

561,120 0.7% 561,120 0.7% 0.0%
hit

Specialized instructions that complete.

85,107,300 99.3% 85,107,300 99.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 620 75.6% 620 75.6% 0.0%
Failure 200 24.4% 200 24.4% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
tuple 140 70.0% 140 70.0% 0.0%
sequence 60 30.0% 60 30.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.

240 75.0% 240 75.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 80 100.0% 80 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.

694,488,420 64.1% 694,488,420 64.1% 0.0%
Not specialized

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

8,973,700 0.8% 8,973,700 0.8% 0.0%
Specialized hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

376,392,720 34.7% 376,392,720 34.7% 0.0%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

3,436,780 0.3% 3,436,780 0.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 3,921,300 43.8% 3,921,300 43.8% 0.0%
STORE_ATTR 3,359,460 37.5% 3,359,460 37.5% 0.0%
SEND 1,119,720 12.5% 1,119,720 12.5% 0.0%
TO_BOOL 561,120 6.3% 561,120 6.3% 0.0%
BINARY_OP 360 0.0% 360 0.0% 0.0%
FOR_ITER 180 0.0% 180 0.0% 0.0%
COMPARE_OP 120 0.0% 120 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
CALL_METHOD_DESCRIPTOR_NOARGS 3,424,000 99.3% 3,424,000 99.3% 0.0%
RESUME 12,600 0.4% 12,600 0.4% 0.0%
RESUME_CHECK 12,600 0.4% 12,600 0.4% 0.0%
CALL_METHOD_DESCRIPTOR_O 120 0.0% 120 0.0% 0.0%
LOAD_GLOBAL_BUILTIN 60 0.0% 60 0.0% 0.0%
CACHE 0 0.0% 0 0.0%
CHECK_EXC_MATCH 0 0.0% 0 0.0%
END_SEND 0 0.0% 0 0.0%
EXIT_INIT_CHECK 0 0.0% 0 0.0%
GET_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 26,314,440 32.0% 26,314,440 32.0% 0.0%
Calls to Python functions inlined 55,997,040 68.0% 55,997,040 68.0% 0.0%
Calls via PyEval_EvalFrame (total) 26,314,440 32.0% 26,314,440 32.0% 0.0%
Calls via PyEval_EvalFrame (vector) 22,395,360 27.2% 22,395,360 27.2% 0.0%
Calls via PyEval_EvalFrame (generator) 3,919,080 4.8% 3,919,080 4.8% 0.0%
Calls via PyEval_EvalFrame (legacy) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (function vectorcall) 22,395,360 27.2% 22,395,360 27.2% 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) 559,860 0.7% 559,860 0.7% 0.0%
Calls via PyEval_EvalFrame (api) 60 0.0% 60 0.0% 0.0%
Calls via PyEval_EvalFrame (method) 11,197,380 13.6% 11,197,380 13.6% 0.0%
Frame objects created 120 0.0% 120 0.0% 0.0%
Frames pushed 75,592,920 91.8% 75,592,920 91.8% 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 135 128 -5.2%
Method cache collisions 559,882 559,968 0.0%
Method cache misses 560,288 560,340 0.0%
Frees 71,507,807 71,508,050 0.0%
Method cache hits 34,718,172 34,718,120 -0.0%
Immortal decrefs 194,458,598 13.1% 194,458,381 13.1% -0.0%
Method cache dunder hits 7,838,925 7,838,932 0.0%
Mortal decrefs 479,006,308 32.2% 479,006,615 32.2% 0.0%
Immortal increfs 175,953,104 12.4% 175,953,161 12.4% 0.0%
Mortal increfs 446,654,322 31.6% 446,654,355 31.6% 0.0%
Allocations from freelist 40,604,420 36.8% 40,604,420 36.8% 0.0%
Frees to freelist 40,604,520 40,604,520 0.0%
Allocations 69,830,640 63.2% 69,830,640 63.2% 0.0%
Allocations to 512 bytes 69,786,420 63.2% 69,786,420 63.2% 0.0%
Allocations to 4 kbytes 44,220 0.0% 44,220 0.0% 0.0%
Allocations over 4 kbytes 0 0.0% 0 0.0%
Inline values 3,919,440 3,919,440 0.0%
Interpreter mortal increfs 607,092,740 43.0% 607,092,740 43.0% 0.0%
Interpreter mortal decrefs 670,907,640 45.2% 670,907,640 45.2% 0.0%
Interpreter immortal increfs 183,684,760 13.0% 183,684,760 13.0% 0.0%
Interpreter immortal decrefs 141,140,760 9.5% 141,140,760 9.5% 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 12,480 160 658,595,740 12,480 160 658,595,740
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.

7,220 7,220 0.0%
Traces created

The number of traces that were successfully created.

620 8.6% 620 8.6% 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.

4,540 62.9% 4,540 62.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 abandoced because it it too short.

6,600 91.4% 6,600 91.4% 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.

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

33,561,720 33,561,720 0.0%
Uops executed

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

1,115,869,200 3,324.8% 1,115,869,200 3,324.8% 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.

620 620 0.0%
Optimizer successes

The number of traces that were successfully optimized.

620 100.0% 620 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 60 9.7% 60 9.7% 0.0%
<= 16 80 12.9% 80 12.9% 0.0%
<= 32 240 38.7% 240 38.7% 0.0%
<= 64 180 29.0% 180 29.0% 0.0%
<= 128 0 0.0% 0 0.0%
<= 256 60 9.7% 60 9.7% 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 0 0.0% 0 0.0%
<= 8 140 22.6% 140 22.6% 0.0%
<= 16 120 19.4% 120 19.4% 0.0%
<= 32 240 38.7% 240 38.7% 0.0%
<= 64 60 9.7% 60 9.7% 0.0%
<= 128 60 9.7% 60 9.7% 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 84,493,640 84,493,640 0.0%
_LOAD_FAST_0 75,564,100 75,564,100 0.0%
_CHECK_VALIDITY 62,672,100 62,672,100 0.0%
_GUARD_TYPE_VERSION 50,924,860 50,924,860 0.0%
_TO_BOOL_BOOL 36,945,140 36,945,140 0.0%
_CHECK_PERIODIC 36,943,380 36,943,380 0.0%
_MAKE_WARM 36,361,020 36,361,020 0.0%
_GUARD_IS_FALSE_POP 34,145,840 34,145,840 0.0%
_START_EXECUTOR 33,561,720 33,561,720 0.0%
_LOAD_ATTR_SLOT_0 31,907,700 31,907,700 0.0%
_EXIT_TRACE 27,414,980 27,414,980 0.0%
_CHECK_MANAGED_OBJECT_HAS_VALUES 25,747,940 25,747,940 0.0%
_LOAD_ATTR_INSTANCE_VALUE_0 25,747,940 25,747,940 0.0%
_PUSH_FRAME 24,620,840 24,620,840 0.0%
_SAVE_RETURN_OFFSET 24,620,840 24,620,840 0.0%
_CHECK_FUNCTION_VERSION 21,821,540 21,821,540 0.0%
_LOAD_FAST_3 20,152,800 20,152,800 0.0%
_CHECK_FUNCTION_EXACT_ARGS 19,026,020 19,026,020 0.0%
_GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 17,899,820 17,899,820 0.0%
_GUARD_KEYS_VERSION 17,899,820 17,899,820 0.0%
_LOAD_ATTR_METHOD_WITH_VALUES 17,899,820 17,899,820 0.0%
_LOAD_ATTR_METHOD_NO_DICT 17,353,500 17,353,500 0.0%
_RESUME_CHECK 15,675,000 15,675,000 0.0%
_TIER2_RESUME_CHECK 13,987,740 13,987,740 0.0%
_STORE_FAST_3 12,876,000 12,876,000 0.0%
_PUSH_NULL 12,875,700 12,875,700 0.0%
_CALL_METHOD_DESCRIPTOR_NOARGS 12,875,700 12,875,700 0.0%
_CHECK_FUNCTION 11,753,280 11,753,280 0.0%
_LOAD_CONST_INLINE 11,753,280 11,753,280 0.0%
_CHECK_STACK_SPACE 11,748,920 11,748,920 0.0%
_GUARD_NOT_EXHAUSTED_RANGE 10,637,460 10,637,460 0.0%
_ITER_CHECK_RANGE 10,637,460 10,637,460 0.0%
_INIT_CALL_PY_EXACT_ARGS_0 10,628,120 10,628,120 0.0%
_ITER_NEXT_RANGE 10,076,400 10,076,400 0.0%
_LOAD_CONST 8,397,900 8,397,900 0.0%
_GUARD_IS_TRUE_POP 8,397,900 8,397,900 0.0%
_INIT_CALL_PY_EXACT_ARGS_1 8,397,900 8,397,900 0.0%
_LOAD_FAST_1 8,394,120 8,394,120 0.0%
_CHECK_VALIDITY_AND_SET_IP 7,833,180 7,833,180 0.0%
_BUILD_LIST 7,277,100 7,277,100 0.0%
_CALL_INTRINSIC_1 7,277,100 7,277,100 0.0%
_LIST_EXTEND 7,277,100 7,277,100 0.0%
_CHECK_STACK_SPACE_OPERAND 7,277,100 7,277,100 0.0%
_LOAD_ATTR 7,277,100 7,277,100 0.0%
_STORE_FAST 7,277,100 7,277,100 0.0%
_LOAD_FAST_2 6,710,760 6,710,760 0.0%
_LOAD_CONST_INLINE_WITH_NULL 6,154,680 6,154,680 0.0%
_STORE_FAST_2 6,154,680 6,154,680 0.0%
_DYNAMIC_EXIT 6,146,540 6,146,540 0.0%
_GUARD_IS_NONE_POP 5,598,600 5,598,600 0.0%
_RETURN_VALUE 5,598,600 5,598,600 0.0%
_CHECK_ATTR_MODULE 5,598,600 5,598,600 0.0%
_CHECK_PEP_523 5,598,600 5,598,600 0.0%
_LOAD_ATTR_MODULE 5,598,600 5,598,600 0.0%
_LOAD_FAST_6 5,598,600 5,598,600 0.0%
_GUARD_NOT_EXHAUSTED_LIST 3,915,240 3,915,240 0.0%
_ITER_CHECK_LIST 3,915,240 3,915,240 0.0%
_GUARD_NOT_EXHAUSTED_TUPLE 3,359,160 3,359,160 0.0%
_ITER_CHECK_TUPLE 3,359,160 3,359,160 0.0%
_CALL_NON_PY_GENERAL 3,355,380 3,355,380 0.0%
_CHECK_IS_NOT_PY_CALLABLE 3,355,380 3,355,380 0.0%
_LOAD_CONST_INLINE_BORROW 2,799,600 2,799,600 0.0%
_COPY 2,799,300 2,799,300 0.0%
_CALL_LIST_APPEND 2,799,300 2,799,300 0.0%
_CALL_TYPE_1 2,799,300 2,799,300 0.0%
_CONTAINS_OP_DICT 2,799,300 2,799,300 0.0%
_CONTAINS_OP_SET 2,799,300 2,799,300 0.0%
_BINARY_OP_SUBTRACT_INT 2,799,300 2,799,300 0.0%
_CALL_BUILTIN_FAST 2,799,300 2,799,300 0.0%
_CHECK_FUNCTION_VERSION_KW 2,799,300 2,799,300 0.0%
_GUARD_NOS_INT 2,799,300 2,799,300 0.0%
_ITER_NEXT_LIST 2,799,300 2,799,300 0.0%
_ITER_NEXT_TUPLE 2,799,300 2,799,300 0.0%
_JUMP_TO_TOP 2,799,300 2,799,300 0.0%
_LOAD_CONST_INLINE_BORROW_WITH_NULL 2,799,300 2,799,300 0.0%
_LOAD_FAST_4 2,799,300 2,799,300 0.0%
_PY_FRAME_KW 2,799,300 2,799,300 0.0%
_STORE_FAST_0 2,799,300 2,799,300 0.0%
_STORE_FAST_6 2,799,300 2,799,300 0.0%
_PY_FRAME_GENERAL 2,795,520 2,795,520 0.0%
_POP_TOP 2,776,920 2,776,920 0.0%
_LOAD_DEREF 2,220,540 2,220,540 0.0%
_GET_ITER 556,080 556,080 0.0%
_STORE_DEREF 556,080 556,080 0.0%
_SWAP 556,080 556,080 0.0%
_CALL_KW_NON_PY 556,080 556,080 0.0%
_CHECK_IS_NOT_PY_CALLABLE_KW 556,080 556,080 0.0%
_LOAD_FAST_5 556,080 556,080 0.0%
_DEOPT 200 200 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
Opcode Base Count Head Count Change
CALL_FUNCTION_EX 2,260 2,260 0.0%
CALL 60 60 0.0%

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