Skip to content

Latest commit

 

History

History
4484 lines (4192 loc) · 91.5 KB

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

File metadata and controls

4484 lines (4192 loc) · 91.5 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
CALL_LIST_APPEND 3,859,623 297,572 -92.3%
BINARY_OP_SUBTRACT_INT 1,891,343 173,612 -90.8%
CALL_LEN 1,989,966 272,235 -86.3%
POP_JUMP_IF_FALSE 2,614,176 360,842 -86.2%
COMPARE_OP 621,748 86,019 -86.2%
COPY 949,488 194,790 -79.5%
STORE_SUBSCR 474,885 97,431 -79.5%
BUILD_TUPLE 720,374 184,771 -74.4%
NOT_TAKEN 1,853,611 638,835 -65.5%
COMPARE_OP_INT 2,670,909 953,178 -64.3%
LOAD_ATTR_METHOD_NO_DICT 5,854,951 2,292,901 -60.8%
BINARY_OP_ADD_INT 4,917,486 2,325,369 -52.7%
BINARY_SUBSCR_LIST_INT 4,774,078 2,389,177 -50.0%
LOAD_GLOBAL_BUILTIN 4,515,169 2,539,432 -43.8%
ENTER_EXECUTOR 10,402,710 6,076,508 -41.6%
LOAD_FAST_LOAD_FAST 6,656,659 4,271,758 -35.8%
JUMP_BACKWARD_JIT 3,804,560 2,662,139 -30.0%
FOR_ITER_LIST 1,825,134 1,309,143 -28.3%
SWAP 3,139,968 2,385,270 -24.0%
STORE_FAST 13,539,616 10,451,142 -22.8%
LOAD_CONST_MORTAL 2,398,202 1,882,190 -21.5%
POP_ITER 3,058,090 2,493,337 -18.5%
FOR_ITER 3,050,586 2,620,485 -14.1%
CALL_NON_PY_GENERAL 1,947,323 1,689,317 -13.2%
GET_ITER 2,862,619 2,604,613 -9.0%
LOAD_FAST 148,510,803 136,156,809 -8.3%
BUILD_LIST 3,278,703 3,020,718 -7.9%
LOAD_SMALL_INT 125,512,813 120,944,982 -3.6%
BINARY_SUBSCR 118,460,288 117,566,696 -0.8%
LOAD_DEREF 116,755,328 116,377,979 -0.3%
CALL_METHOD_DESCRIPTOR_FAST 1,056,259 1,056,260 0.0%
BINARY_SUBSCR_TUPLE_INT 2,210,327 2,210,329 0.0%
UNPACK_SEQUENCE_TWO_TUPLE 1,121,748 1,121,749 0.0%
STORE_FAST_STORE_FAST 1,121,865 1,121,866 0.0%
POP_JUMP_IF_NOT_NONE 3,369,161 3,369,162 0.0%
BINARY_OP 4,162,716 4,162,717 0.0%
RETURN_VALUE 232,879,830 232,879,830 0.0%
RESUME_CHECK 232,728,697 232,728,697 0.0%
INTERPRETER_EXIT 232,463,659 232,463,659 0.0%
COPY_FREE_VARS 116,280,384 116,280,384 0.0%
LOAD_CONST_IMMORTAL 3,292,496 3,292,496 0.0%
BINARY_SLICE 2,037,568 2,037,568 0.0%
LIST_APPEND 1,774,592 1,774,592 0.0%
POP_JUMP_IF_NONE 1,265,803 1,265,803 0.0%
LOAD_FAST_AND_CLEAR 938,240 938,240 0.0%
STORE_FAST_LOAD_FAST 778,140 778,140 0.0%
POP_JUMP_IF_TRUE 735,503 735,503 0.0%
NOP 577,319 577,319 0.0%
CALL_BUILTIN_CLASS 576,188 576,188 0.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 524,604 524,604 0.0%
BINARY_SUBSCR_DICT 514,446 514,446 0.0%
POP_TOP 513,609 513,609 0.0%
CALL_METHOD_DESCRIPTOR_O 413,950 413,950 0.0%
JUMP_FORWARD 413,695 413,695 0.0%
LOAD_GLOBAL_MODULE 314,723 314,723 0.0%
LOAD_ATTR_INSTANCE_VALUE 263,605 263,605 0.0%
CALL_PY_EXACT_ARGS 263,337 263,337 0.0%
PUSH_NULL 100,404 100,404 0.0%
EXTENDED_ARG 98,667 98,667 0.0%
STORE_SUBSCR_DICT 65,537 65,537 0.0%
MAP_ADD 65,536 65,536 0.0%
LOAD_ATTR_MODULE 50,624 50,624 0.0%
LOAD_ATTR 50,537 50,537 0.0%
CALL_FUNCTION_EX 49,536 49,536 0.0%
TO_BOOL 49,391 49,391 0.0%
CALL_KW_NON_PY 49,342 49,342 0.0%
BUILD_MAP 49,282 49,282 0.0%
MAKE_FUNCTION 49,280 49,280 0.0%
SET_FUNCTION_ATTRIBUTE 49,280 49,280 0.0%
STORE_DEREF 49,216 49,216 0.0%
DICT_MERGE 49,152 49,152 0.0%
LOAD_SUPER_ATTR_METHOD 49,151 49,151 0.0%
FOR_ITER_RANGE 16,722 16,722 0.0%
TO_BOOL_STR 2,765 2,765 0.0%
COMPARE_OP_STR 2,314 2,314 0.0%
TO_BOOL_BOOL 1,386 1,386 0.0%
CALL_ISINSTANCE 983 983 0.0%
STORE_ATTR_SLOT 956 956 0.0%
LOAD_ATTR_SLOT 900 900 0.0%
FOR_ITER_TUPLE 835 835 0.0%
LOAD_ATTR_CLASS 833 833 0.0%
CALL 797 797 0.0%
IS_OP 750 750 0.0%
STORE_ATTR_INSTANCE_VALUE 677 677 0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS 643 643 0.0%
LOAD_ATTR_PROPERTY 574 574 0.0%
LOAD_ATTR_METHOD_WITH_VALUES 480 480 0.0%
LOAD_GLOBAL 412 412 0.0%
BINARY_OP_ADD_UNICODE 385 385 0.0%
CALL_PY_GENERAL 380 380 0.0%
CALL_BOUND_METHOD_EXACT_ARGS 368 368 0.0%
CALL_TYPE_1 322 322 0.0%
YIELD_VALUE 320 320 0.0%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT 320 320 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 262 262 0.0%
UNPACK_SEQUENCE_TUPLE 257 257 0.0%
CALL_BUILTIN_O 235 235 0.0%
CHECK_EXC_MATCH 195 195 0.0%
POP_EXCEPT 195 195 0.0%
PUSH_EXC_INFO 195 195 0.0%
MAKE_CELL 192 192 0.0%
STORE_ATTR 183 183 0.0%
TO_BOOL_LIST 164 164 0.0%
TO_BOOL_NONE 147 147 0.0%
BINARY_OP_INPLACE_ADD_UNICODE 134 134 0.0%
JUMP_BACKWARD_NO_JIT 132 132 0.0%
TO_BOOL_INT 131 131 0.0%
LOAD_SPECIAL 128 128 0.0%
CALL_KW_PY 126 126 0.0%
BINARY_SUBSCR_STR_INT 118 118 0.0%
CONTAINS_OP_SET 116 116 0.0%
CALL_KW 113 113 0.0%
CONTAINS_OP 94 94 0.0%
BINARY_SUBSCR_GETITEM 83 83 0.0%
BINARY_OP_EXTEND 82 82 0.0%
CALL_BUILTIN_FAST 66 66 0.0%
LOAD_FAST_CHECK 65 65 0.0%
RETURN_GENERATOR 64 64 0.0%
CALL_INTRINSIC_1 64 64 0.0%
LIST_EXTEND 64 64 0.0%
CALL_STR_1 64 64 0.0%
BINARY_OP_SUBTRACT_FLOAT 63 63 0.0%
LOAD_CONST 52 52 0.0%
STORE_SUBSCR_LIST_INT 40 40 0.0%
UNPACK_SEQUENCE 26 26 0.0%
RESUME 26 26 0.0%
UNARY_NOT 25 25 0.0%
EXIT_INIT_CHECK 24 24 0.0%
CALL_ALLOC_AND_ENTER_INIT 24 24 0.0%
JUMP_BACKWARD 23 23 0.0%
BINARY_OP_MULTIPLY_INT 11 11 0.0%
CONTAINS_OP_DICT 10 10 0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 3 3 0.0%
LOAD_SUPER_ATTR 2 2 0.0%
CALL_TUPLE_1 1 1 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.

4,161,533 0.2% 4,161,534 0.2% 0.0%
hit

Specialized instructions that complete.

2,050,544,501 99.8% 2,050,544,501 99.8% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 30 2.5% 30 2.5% 0.0%
Failure 1,153 97.5% 1,153 97.5% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
add other 1,111 96.4% 1,111 96.4% 0.0%
true divide different types 42 3.6% 42 3.6% 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.

2,037,568 100.0% 2,037,568 100.0% 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.

118,431,269 7.9% 117,537,908 7.8% -0.8%
hit

Specialized instructions that complete.

1,388,646,210 92.1% 1,388,646,210 92.2% 0.0%
miss

Specialized instructions that deopt.

23 0.0% 23 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 28,965 99.8% 28,734 99.8% -0.8%
Success 55 0.2% 55 0.2% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
list slice 445 1.5% 319 1.1% -28.3%
other 28,520 98.5% 28,415 98.9% -0.4%

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.

125 0.0% 125 0.0% 0.0%
hit

Specialized instructions that complete.

1,984,339,707 100.0% 1,984,339,707 100.0% 0.0%
miss

Specialized instructions that deopt.

66 0.0% 66 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 738 100.0% 738 100.0% 0.0%
Failure 0 0.0% 0 0.0%

CALL_KW

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

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

6 5.3% 6 5.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 107 100.0% 107 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.

621,542 0.1% 85,939 0.0% -86.2%
hit

Specialized instructions that complete.

989,880,949 99.9% 989,880,949 100.0% 0.0%
miss

Specialized instructions that deopt.

2 0.0% 2 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 161 77.8% 35 43.2% -78.3%
Success 46 22.2% 46 56.8% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
tuple 159 98.8% 33 94.3% -79.2%
different types 2 1.2% 2 5.7% 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.

93 42.3% 93 42.3% 0.0%
hit

Specialized instructions that complete.

126 57.3% 126 57.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 0 0.0% 0 0.0%
Failure 1 100.0% 1 100.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
str 1 100.0% 1 100.0% 0.0%

FOR_ITER

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

Specialized instructions that complete.

1,842,691 37.7% 1,326,700 33.6% -28.0%
deferred

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

3,049,781 62.3% 2,619,785 66.4% -14.1%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 797 99.0% 692 98.9% -13.2%
Success 8 1.0% 8 1.1% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
zip 138 17.3% 33 4.8% -76.1%
enumerate 330 41.4% 330 47.7% 0.0%
bytes 276 34.6% 276 39.9% 0.0%
dict items 51 6.4% 51 7.4% 0.0%
dict values 1 0.1% 1 0.1% 0.0%
seq iter 1 0.1% 1 0.1% 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.

49,797 0.0% 49,797 0.0% 0.0%
hit

Specialized instructions that complete.

994,487,899 100.0% 994,487,899 100.0% 0.0%
miss

Specialized instructions that deopt.

193 0.0% 193 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 604 81.6% 604 81.6% 0.0%
Failure 136 18.4% 136 18.4% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
method 51 37.5% 51 37.5% 0.0%
non overriding descriptor 21 15.4% 21 15.4% 0.0%
not managed dict 21 15.4% 21 15.4% 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.

4,829,880 100.0% 2,854,143 100.0% -40.9%
deferred

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

33 0.0% 33 0.0% 0.0%
deopt

Specialized instructions that deopt.

1 0.0% 1 0.0% 0.0%
miss

Specialized instructions that deopt.

12 0.0% 12 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 379 100.0% 379 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
deferred

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

1 0.0% 1 0.0% 0.0%
hit

Specialized instructions that complete.

49,151 100.0% 49,151 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 1 100.0% 1 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
deferred

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

15 0.8% 15 0.8% 0.0%
hit

Specialized instructions that complete.

1,633 89.9% 1,633 89.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 168 100.0% 168 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
deferred

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

474,746 87.8% 97,397 59.7% -79.5%
hit

Specialized instructions that complete.

65,577 12.1% 65,577 40.2% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 137 98.6% 32 94.1% -76.6%
Success 2 1.4% 2 5.9% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 137 100.0% 32 100.0% -76.6%

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.

49,255 91.2% 49,255 91.2% 0.0%
hit

Specialized instructions that complete.

4,582 8.5% 4,582 8.5% 0.0%
miss

Specialized instructions that deopt.

11 0.0% 11 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 64 47.1% 64 47.1% 0.0%
Failure 72 52.9% 72 52.9% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
dict 50 69.4% 50 69.4% 0.0%
sequence 21 29.2% 21 29.2% 0.0%
mapping 1 1.4% 1 1.4% 0.0%

UNPACK_SEQUENCE

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

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

3 0.0% 3 0.0% 0.0%
hit

Specialized instructions that complete.

5,338,794 100.0% 5,338,794 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 23 100.0% 23 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 hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

283,977,583 19.6% 262,315,108 18.9% -7.6%
Basic

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

1,033,529,493 71.5% 999,836,891 72.0% -3.3%
Not specialized

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

128,909,346 8.9% 126,672,471 9.1% -1.7%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

307 0.0% 307 0.0% 0.0%

Deferred by instruction

Breakdown of deferred (not specialized) instruction counts by family
Name Base Count Base Ratio Head Count Head Ratio Change
COMPARE_OP 621,542 0.5% 85,939 0.1% -86.2%
STORE_SUBSCR 474,746 0.4% 97,397 0.1% -79.5%
FOR_ITER 3,049,781 2.4% 2,619,785 2.1% -14.1%
BINARY_SUBSCR 118,431,269 91.9% 117,537,908 92.8% -0.8%
BINARY_OP 4,161,533 3.2% 4,161,534 3.3% 0.0%
BINARY_SLICE 2,037,568 1.6% 2,037,568 1.6% 0.0%
LOAD_ATTR 49,797 0.0% 49,797 0.0% 0.0%
TO_BOOL 49,255 0.0% 49,255 0.0% 0.0%
CALL 125 0.0% 125 0.0% 0.0%
CONTAINS_OP 93 0.0% 93 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
LOAD_ATTR_SLOT 192 62.5% 192 62.5% 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 63 20.5% 63 20.5% 0.0%
BINARY_SUBSCR_LIST_INT 22 7.2% 22 7.2% 0.0%
TO_BOOL_NONE 7 2.3% 7 2.3% 0.0%
LOAD_GLOBAL_BUILTIN 6 2.0% 6 2.0% 0.0%
LOAD_GLOBAL_MODULE 6 2.0% 6 2.0% 0.0%
TO_BOOL_LIST 3 1.0% 3 1.0% 0.0%
CALL_BUILTIN_FAST 2 0.7% 2 0.7% 0.0%
COMPARE_OP_STR 2 0.7% 2 0.7% 0.0%
CALL_PY_EXACT_ARGS 1 0.3% 1 0.3% 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 232,463,744 99.8% 232,463,744 99.8% 0.0%
Calls to Python functions inlined 416,467 0.2% 416,467 0.2% 0.0%
Calls via PyEval_EvalFrame (total) 232,463,744 99.8% 232,463,744 99.8% 0.0%
Calls via PyEval_EvalFrame (vector) 232,463,360 99.8% 232,463,360 99.8% 0.0%
Calls via PyEval_EvalFrame (generator) 384 0.0% 384 0.0% 0.0%
Calls via PyEval_EvalFrame (legacy) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (function vectorcall) 232,463,360 99.8% 232,463,360 99.8% 0.0%
Calls via PyEval_EvalFrame (build class) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (slot) 312 0.0% 312 0.0% 0.0%
Calls via PyEval_EvalFrame (function ex) 128 0.0% 128 0.0% 0.0%
Calls via PyEval_EvalFrame (api) 116,182,022 49.9% 116,182,022 49.9% 0.0%
Calls via PyEval_EvalFrame (method) 0 0.0% 0 0.0%
Frame objects created 237 0.0% 237 0.0% 0.0%
Frames pushed 232,879,851 100.0% 232,879,851 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
Interpreter immortal decrefs 41,504,643 0.1% 23,999,363 0.1% -42.2%
Interpreter immortal increfs 25,203,092 0.1% 16,799,538 0.1% -33.3%
Method cache dunder misses 46 53 15.2%
Method cache collisions 353 387 9.6%
Mortal increfs 17,775,289,538 67.6% 16,248,296,714 65.7% -8.6%
Mortal decrefs 22,103,628,081 58.9% 20,576,901,916 57.2% -6.9%
Interpreter mortal increfs 1,220,018,479 4.6% 1,196,885,805 4.8% -1.9%
Interpreter mortal decrefs 1,239,048,419 3.3% 1,215,632,366 3.4% -1.9%
Method cache misses 362 368 1.7%
Allocations to 4 kbytes 149,846 0.0% 149,241 0.0% -0.4%
Immortal increfs 7,267,034,126 27.6% 7,275,177,775 29.4% 0.1%
Immortal decrefs 14,130,492,973 37.7% 14,143,670,774 39.3% 0.1%
Allocations over 4 kbytes 242,944 0.0% 243,139 0.0% 0.1%
Method cache hits 53,847 53,841 -0.0%
Allocations from freelist 3,680,410,388 79.3% 3,680,394,495 79.3% -0.0%
Frees to freelist 3,680,412,457 3,680,396,564 -0.0%
Frees 1,278,971,673 1,278,970,765 -0.0%
Allocations 959,333,863 20.7% 959,333,325 20.7% -0.0%
Method cache dunder hits 944,047,369 944,047,152 -0.0%
Allocations to 512 bytes 958,941,073 20.7% 958,940,945 20.7% -0.0%
Inline values 49,304 49,304 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 147,649 377 2,038,141,962 130,707,887 237,387,692 147,649 377 2,038,547,633 130,826,910 237,350,195
2 0 0 0 0 0 0 0 0 0 0

Optimization (Tier 2) stats

statistics about the Tier 2 optimizer
Base Count Base Ratio Head Count Head Ratio Change
Traces executed

The number of traces that were executed

1,556,232,102 10,435,697 -99.3%
Optimization attempts

The number of times a potential trace is identified. Specifically, this occurs in the JUMP BACKWARD instruction when the counter reaches a threshold.

2,133 1,289 -39.6%
Traces created

The number of traces that were successfully created.

2,133 100.0% 1,289 100.0% -39.6%
Uops executed

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

59,711,792,623 3,836.9% 57,629,972,526 552,238.8% -3.5%
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.

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%
Trace too short

A potential trace is abandoned because it it too short.

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.

64 3.0% 64 5.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.

2,133 1,289 -39.6%
Optimizer successes

The number of traces that were successfully optimized.

2,133 100.0% 1,289 100.0% -39.6%
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
Padding size

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

5,168,560 22.3% 3,881,847 15.3% -24.9%
Data size

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

2,724,128 11.8% 3,341,904 13.1% 22.7%
Code size

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

15,262,000 65.9% 18,228,793 71.6% 19.4%
Total memory size

The total size of the memory allocated for the JIT traces

23,154,688 25,452,544 9.9%
Freed memory size

The size of the memory freed from the JIT traces

22,974,464 99.2% 23,855,104 93.7% 3.8%
Trampoline size

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

0 0.0% 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 405 19.0% 277 17.4% -31.6%
<= 8,192 768 36.0% 495 31.0% -35.5%
<= 16,384 704 33.0% 389 24.4% -44.7%
<= 32,768 256 12.0% 326 20.4% 27.3%
<= 65,536 45 2.8%
<= 131,072 63 3.9%

Trace length histogram

trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 8 256 12.0% 128 9.9% -50.0%
<= 16 128 6.0% 128 9.9% 0.0%
<= 32 661 31.0% 386 29.9% -41.6%
<= 64 704 33.0% 452 35.1% -35.8%
<= 128 384 18.0% 195 15.1% -49.2%

Optimized trace length histogram

optimized trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 4 256 12.0% 128 9.9% -50.0%
<= 8 0 0.0% 0 0.0%
<= 16 512 24.0% 258 20.0% -49.6%
<= 32 405 19.0% 321 24.9% -20.7%
<= 64 704 33.0% 389 30.2% -44.7%
<= 128 256 12.0% 193 15.0% -24.6%

Trace run length histogram

trace run length histogram

Uop execution stats

uop execution stats
Name Base Count Head Count Change
_LOAD_SMALL_INT_2 462,691 1,633,784 253.1%
_JUMP_TO_TOP 429,443,393 1,343,036,252 212.7%
_EXIT_TRACE 1,556,232,102 10,435,695 -99.3%
_START_EXECUTOR 1,556,232,102 10,435,697 -99.3%
_CALL_LIST_APPEND 983,644,869 987,206,920 0.4%
_LOAD_ATTR_METHOD_NO_DICT 988,164,378 991,726,428 0.4%
_GUARD_TYPE_VERSION 988,315,802 991,877,852 0.4%
_STORE_FAST_4 670,187,788 672,124,938 0.3%
_LOAD_FAST 2,646,102,858 2,653,342,228 0.3%
_GUARD_IS_FALSE_POP 353,828,400 354,789,186 0.3%
_BINARY_OP_ADD_INT 1,057,571,941 1,060,164,058 0.2%
_GUARD_NOS_INT 2,008,899,524 2,013,625,443 0.2%
_LOAD_FAST_4 2,711,059,223 2,716,841,020 0.2%
_MAKE_WARM 1,985,675,495 1,989,783,826 0.2%
_POP_TOP 317,553,451 318,118,204 0.2%
_CALL_LEN 986,163,056 987,880,787 0.2%
_BINARY_OP_SUBTRACT_INT 986,163,056 987,880,787 0.2%
_COMPARE_OP_INT 987,207,728 988,925,459 0.2%
_LOAD_FAST_5 2,361,103,923 2,365,206,555 0.2%
_BINARY_SUBSCR_LIST_INT 1,372,565,827 1,374,950,728 0.2%
_SET_IP 7,369,268,541 7,381,279,091 0.2%
_LOAD_SMALL_INT_1 2,047,489,095 2,050,627,849 0.2%
_BUILD_TUPLE 352,388,993 352,924,596 0.2%
_COMPARE_OP 352,388,993 352,924,596 0.2%
_CHECK_FUNCTION 1,307,749,231 1,309,724,968 0.2%
_PUSH_NULL 1,308,922,883 1,310,898,620 0.2%
_CHECK_VALIDITY 6,025,642,276 6,034,466,402 0.1%
_LOAD_CONST_INLINE 1,623,385,838 1,625,619,581 0.1%
_GUARD_IS_TRUE_POP 985,768,321 987,060,869 0.1%
_CHECK_VALIDITY_AND_SET_IP 2,708,971,814 2,711,986,212 0.1%
_COPY 706,642,816 707,397,514 0.1%
_LOAD_DEREF 353,321,408 353,698,757 0.1%
_STORE_SUBSCR 353,321,408 353,698,757 0.1%
_SWAP 707,347,712 708,102,410 0.1%
_BINARY_SUBSCR 990,090,046 990,983,407 0.1%
_STORE_FAST 992,107,327 993,000,666 0.1%
_CHECK_PERIODIC 1,677,401,533 1,678,801,665 0.1%
_ITER_NEXT_LIST 634,871,850 635,387,841 0.1%
_GUARD_NOT_EXHAUSTED_LIST 635,222,186 635,738,177 0.1%
_ITER_CHECK_LIST 635,222,186 635,738,177 0.1%
_GET_ITER 318,989,759 319,247,765 0.1%
_STORE_FAST_5 319,112,296 319,370,281 0.1%
_BUILD_LIST 320,881,215 321,139,200 0.1%
_CALL_NON_PY_GENERAL 321,434,751 321,692,757 0.1%
_CHECK_IS_NOT_PY_CALLABLE 321,434,751 321,692,757 0.1%
_LOAD_SMALL_INT_0 321,427,476 321,685,460 0.1%
_LOAD_CONST_INLINE_BORROW 325,590,459 325,848,465 0.1%
_FOR_ITER_TIER_TWO 680,178,388 680,608,384 0.1%
_GUARD_IS_NOT_NONE_POP 3,472,917 3,472,916 -0.0%
_BINARY_SUBSCR_TUPLE_INT 8,433,578 8,433,576 -0.0%
_LOAD_FAST_7 8,433,578 8,433,576 -0.0%
_UNPACK_SEQUENCE_TWO_TUPLE 4,216,789 4,216,788 -0.0%
_CALL_METHOD_DESCRIPTOR_FAST 4,216,789 4,216,788 -0.0%
_STORE_FAST_7 4,216,789 4,216,788 -0.0%
_LOAD_FAST_0 4,515,989 4,515,988 -0.0%
_BINARY_OP 5,168,917 5,168,916 -0.0%
_STORE_FAST_6 5,841,109 5,841,108 -0.0%
_LOAD_FAST_3 3,616,808 3,616,808 0.0%
_LIST_APPEND 3,297,664 3,297,664 0.0%
_GUARD_IS_NONE_POP 2,723,648 2,723,648 0.0%
_LOAD_FAST_6 1,950,101 1,950,101 0.0%
_STORE_FAST_2 1,625,152 1,625,152 0.0%
_LOAD_FAST_2 1,525,568 1,525,568 0.0%
_CALL_BUILTIN_CLASS 1,173,652 1,173,652 0.0%
_GUARD_BOTH_INT 1,044,672 1,044,672 0.0%
_BINARY_SLICE 634,752 634,752 0.0%
_STORE_FAST_3 416,960 416,960 0.0%
_LOAD_FAST_AND_CLEAR 302,720 302,720 0.0%
_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 302,720 302,720 0.0%
_RESUME_CHECK 151,424 151,424 0.0%
_CHECK_FUNCTION_VERSION_INLINE 151,424 151,424 0.0%
_CHECK_MANAGED_OBJECT_HAS_VALUES 151,424 151,424 0.0%
_CHECK_STACK_SPACE_OPERAND 151,424 151,424 0.0%
_INIT_CALL_PY_EXACT_ARGS_2 151,424 151,424 0.0%
_LOAD_ATTR_INSTANCE_VALUE 151,424 151,424 0.0%
_LOAD_FAST_1 151,424 151,424 0.0%
_PUSH_FRAME 151,424 151,424 0.0%
_SAVE_RETURN_OFFSET 151,424 151,424 0.0%
_BINARY_SUBSCR_DICT 147,776 147,776 0.0%
_DEOPT 2

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 21 21 0.0%

Stats gathered on: 2025-02-06