Skip to content

Latest commit

 

History

History
4997 lines (4696 loc) · 102 KB

bm-20250121-azure-x86_64-brandtbucher-remove_optimizer_api-3.14.0a4+-085e172-pystats-genshi-vs-base.md

File metadata and controls

4997 lines (4696 loc) · 102 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
JUMP_BACKWARD 512,110 98 -100.0%
LOAD_FAST 162,281,041 162,281,041 0.0%
LOAD_GLOBAL_MODULE 64,511,389 64,511,389 0.0%
STORE_FAST 60,636,558 60,636,558 0.0%
POP_JUMP_IF_FALSE 59,190,332 59,190,332 0.0%
IS_OP 44,548,187 44,548,187 0.0%
YIELD_VALUE 40,426,059 40,426,059 0.0%
PUSH_NULL 26,044,365 26,044,365 0.0%
LOAD_CONST_IMMORTAL 22,982,220 22,982,220 0.0%
RESUME_CHECK 22,939,802 22,939,802 0.0%
LOAD_SMALL_INT 22,212,244 22,212,244 0.0%
BINARY_SUBSCR_TUPLE_INT 20,710,351 20,710,351 0.0%
LOAD_FAST_LOAD_FAST 18,091,299 18,091,299 0.0%
RETURN_VALUE 15,731,897 15,731,897 0.0%
BUILD_TUPLE 12,995,049 12,995,049 0.0%
POP_TOP 11,759,062 11,759,062 0.0%
INTERPRETER_EXIT 10,920,666 10,920,666 0.0%
STORE_FAST_STORE_FAST 10,875,311 10,875,311 0.0%
UNPACK_SEQUENCE_TUPLE 10,865,153 10,865,153 0.0%
TO_BOOL_BOOL 10,493,923 10,493,923 0.0%
ENTER_EXECUTOR 9,222,826 9,222,826 0.0%
POP_JUMP_IF_TRUE 9,005,206 9,005,206 0.0%
LOAD_GLOBAL_BUILTIN 8,814,520 8,814,520 0.0%
CALL_PY_EXACT_ARGS 6,977,019 6,977,019 0.0%
LOAD_ATTR 6,399,837 6,399,837 0.0%
LOAD_ATTR_MODULE 6,069,922 6,069,922 0.0%
TO_BOOL 5,670,189 5,670,189 0.0%
CALL_STR_1 5,418,844 5,418,844 0.0%
CALL_ISINSTANCE 5,411,042 5,411,042 0.0%
LOAD_NAME 4,825,852 4,825,852 0.0%
POP_JUMP_IF_NONE 4,747,974 4,747,974 0.0%
CALL_BOUND_METHOD_EXACT_ARGS 4,635,722 4,635,722 0.0%
BUILD_MAP 4,633,618 4,633,618 0.0%
CALL_BUILTIN_FAST 3,675,856 3,675,856 0.0%
CALL_NON_PY_GENERAL 3,223,508 3,223,508 0.0%
GET_ITER 3,019,097 3,019,097 0.0%
TO_BOOL_LIST 2,770,850 2,770,850 0.0%
LOAD_METHOD_NO_DICT 2,707,413 2,707,413 0.0%
FOR_ITER 2,597,419 2,597,419 0.0%
LOAD_ATTR_SLOT 2,514,975 2,514,975 0.0%
LOAD_ATTR_INSTANCE_VALUE 2,358,348 2,358,348 0.0%
CONTAINS_OP_DICT 2,348,598 2,348,598 0.0%
LOAD_METHOD 2,338,442 2,338,442 0.0%
LOAD_METHOD_WITH_VALUES 2,331,550 2,331,550 0.0%
SWAP 2,136,507 2,136,507 0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS 2,124,150 2,124,150 0.0%
BINARY_SUBSCR_DICT 2,123,935 2,123,935 0.0%
TO_BOOL_INT 845,965 845,965 0.0%
CONTAINS_OP_SET 774,340 774,340 0.0%
JUMP_FORWARD 716,092 716,092 0.0%
COMPARE_OP 709,818 709,818 0.0%
POP_ITER 568,236 568,236 0.0%
LOAD_CONST_MORTAL 526,313 526,313 0.0%
EXTENDED_ARG 519,017 519,017 0.0%
NOP 423,218 423,218 0.0%
CALL_BUILTIN_O 400,394 400,394 0.0%
CALL_METHOD_DESCRIPTOR_FAST 312,631 312,631 0.0%
FOR_ITER_GEN 285,386 285,386 0.0%
CALL_PY_GENERAL 274,492 274,492 0.0%
FOR_ITER_LIST 223,022 223,022 0.0%
CALL_TYPE_1 215,181 215,181 0.0%
POP_JUMP_IF_NOT_NONE 209,162 209,162 0.0%
COPY_FREE_VARS 201,309 201,309 0.0%
BINARY_SUBSCR 201,206 201,206 0.0%
STORE_SUBSCR_DICT 200,924 200,924 0.0%
RETURN_GENERATOR 196,222 196,222 0.0%
BINARY_SUBSCR_LIST_INT 196,078 196,078 0.0%
CALL_FUNCTION_EX 195,322 195,322 0.0%
END_FOR 194,863 194,863 0.0%
DICT_MERGE 194,550 194,550 0.0%
NOT_TAKEN 194,504 194,504 0.0%
CALL_BUILTIN_CLASS 194,127 194,127 0.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 184,757 184,757 0.0%
CALL_KW_NON_PY 129,437 129,437 0.0%
LIST_APPEND 129,286 129,286 0.0%
FOR_ITER_RANGE 128,609 128,609 0.0%
UNPACK_SEQUENCE_TWO_TUPLE 80,427 80,427 0.0%
FOR_ITER_TUPLE 76,512 76,512 0.0%
CALL_LEN 20,844 20,844 0.0%
COMPARE_OP_INT 18,868 18,868 0.0%
STORE_ATTR_INSTANCE_VALUE 16,798 16,798 0.0%
BUILD_LIST 13,206 13,206 0.0%
COPY 11,931 11,931 0.0%
CALL_LIST_APPEND 9,701 9,701 0.0%
BINARY_OP 9,235 9,235 0.0%
BINARY_OP_ADD_UNICODE 7,233 7,233 0.0%
CALL 6,271 6,271 0.0%
LOAD_DEREF 5,290 5,290 0.0%
TO_BOOL_STR 4,811 4,811 0.0%
STORE_ATTR_SLOT 4,512 4,512 0.0%
CALL_KW_BOUND_METHOD 4,094 4,094 0.0%
TO_BOOL_NONE 4,048 4,048 0.0%
LOAD_GLOBAL 3,666 3,666 0.0%
CONTAINS_OP 3,509 3,509 0.0%
STORE_ATTR 3,467 3,467 0.0%
BINARY_OP_ADD_INT 3,394 3,394 0.0%
CHECK_EXC_MATCH 3,370 3,370 0.0%
POP_EXCEPT 3,370 3,370 0.0%
PUSH_EXC_INFO 3,370 3,370 0.0%
JUMP_BACKWARD_NO_INTERRUPT 3,358 3,358 0.0%
MAKE_CELL 2,728 2,728 0.0%
COMPARE_OP_STR 2,564 2,564 0.0%
CALL_METHOD_DESCRIPTOR_O 2,469 2,469 0.0%
MAKE_FUNCTION 2,315 2,315 0.0%
CALL_KW_PY 2,060 2,060 0.0%
SET_FUNCTION_ATTRIBUTE 1,896 1,896 0.0%
STORE_SUBSCR_LIST_INT 1,848 1,848 0.0%
LOAD_FAST_AND_CLEAR 1,815 1,815 0.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 1,592 1,592 0.0%
BINARY_SLICE 1,562 1,562 0.0%
LOAD_CONST 1,440 1,440 0.0%
EXIT_INIT_CHECK 1,267 1,267 0.0%
CALL_ALLOC_AND_ENTER_INIT 1,267 1,267 0.0%
BINARY_OP_SUBTRACT_INT 1,265 1,265 0.0%
IMPORT_FROM 1,260 1,260 0.0%
IMPORT_NAME 1,234 1,234 0.0%
DELETE_SUBSCR 1,106 1,106 0.0%
STORE_DEREF 1,047 1,047 0.0%
CALL_TUPLE_1 844 844 0.0%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT 770 770 0.0%
UNPACK_SEQUENCE 668 668 0.0%
TO_BOOL_ALWAYS_TRUE 644 644 0.0%
RESUME 632 632 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 580 580 0.0%
LIST_EXTEND 459 459 0.0%
CALL_INTRINSIC_1 453 453 0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 393 393 0.0%
BINARY_SUBSCR_STR_INT 385 385 0.0%
STORE_FAST_LOAD_FAST 319 319 0.0%
BINARY_SUBSCR_GETITEM 297 297 0.0%
LOAD_SUPER_METHOD_METHOD 260 260 0.0%
STORE_SLICE 258 258 0.0%
STORE_NAME 258 258 0.0%
UNPACK_SEQUENCE_LIST 256 256 0.0%
CALL_KW 236 236 0.0%
LOAD_ATTR_PROPERTY 225 225 0.0%
LOAD_METHOD_LAZY_DICT 193 193 0.0%
BINARY_OP_INPLACE_ADD_UNICODE 155 155 0.0%
BINARY_OP_SUBTRACT_FLOAT 127 127 0.0%
STORE_SUBSCR 70 70 0.0%
DELETE_ATTR 64 64 0.0%
LOAD_SPECIAL 36 36 0.0%
UNARY_NOT 31 31 0.0%
BINARY_OP_MULTIPLY_INT 22 22 0.0%
LOAD_BUILD_CLASS 18 18 0.0%
LOAD_LOCALS 18 18 0.0%
LOAD_FAST_CHECK 15 15 0.0%
UNARY_INVERT 8 8 0.0%
LOAD_SUPER_METHOD 4 4 0.0%
COMPARE_OP_FLOAT 2 2 0.0%
LOAD_ATTR_CLASS 2 2 0.0%
JUMP_BACKWARD_JIT 511,937
JUMP_BACKWARD_NO_JIT 173

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,438 39.4% 8,438 39.4% 0.0%
hit

Specialized instructions that complete.

12,196 56.9% 12,196 56.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 173 21.7% 173 21.7% 0.0%
Failure 624 78.3% 624 78.3% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
remainder 363 58.2% 363 58.2% 0.0%
add other 131 21.0% 131 21.0% 0.0%
multiply different types 129 20.7% 129 20.7% 0.0%
and int 1 0.2% 1 0.2% 0.0%

BINARY_SLICE

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

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

1,562 100.0% 1,562 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.

200,453 0.9% 200,453 0.9% 0.0%
hit

Specialized instructions that complete.

23,031,013 99.1% 23,031,013 99.1% 0.0%
miss

Specialized instructions that deopt.

33 0.0% 33 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 190 25.2% 190 25.2% 0.0%
Failure 563 74.8% 563 74.8% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
out of range 309 54.9% 309 54.9% 0.0%
list slice 146 25.9% 146 25.9% 0.0%
tuple slice 108 19.2% 108 19.2% 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.

1,736 0.0% 1,736 0.0% 0.0%
hit

Specialized instructions that complete.

43,312,676 100.0% 43,312,676 100.0% 0.0%
miss

Specialized instructions that deopt.

3,966 0.0% 3,966 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 4,578 100.0% 4,578 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 21 21 / 0 !! 21 21 / 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.

28 11.9% 28 11.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 208 100.0% 208 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.

709,239 47.4% 709,239 47.4% 0.0%
hit

Specialized instructions that complete.

785,457 52.5% 785,457 52.5% 0.0%
miss

Specialized instructions that deopt.

10 0.0% 10 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 176 30.4% 176 30.4% 0.0%
Failure 403 69.6% 403 69.6% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
different types 266 66.0% 266 66.0% 0.0%
tuple 93 23.1% 93 23.1% 0.0%
other 43 10.7% 43 10.7% 0.0%
big int 1 0.2% 1 0.2% 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.

3,169 0.1% 3,169 0.1% 0.0%
hit

Specialized instructions that complete.

3,923,987 99.9% 3,923,987 99.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 8 2.4% 8 2.4% 0.0%
Failure 332 97.6% 332 97.6% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
str 200 60.2% 200 60.2% 0.0%
list 89 26.8% 89 26.8% 0.0%
other 43 13.0% 43 13.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.

2,596,181 7.4% 2,596,181 7.4% 0.0%
hit

Specialized instructions that complete.

32,563,421 92.6% 32,563,421 92.6% 0.0%
miss

Specialized instructions that deopt.

2,496 0.0% 2,496 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 99 8.0% 99 8.0% 0.0%
Failure 1,146 92.0% 1,146 92.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 599 52.3% 599 52.3% 0.0%
dict values 137 12.0% 137 12.0% 0.0%
zip 117 10.2% 117 10.2% 0.0%
itertools 105 9.2% 105 9.2% 0.0%
dict keys 90 7.9% 90 7.9% 0.0%
set 53 4.6% 53 4.6% 0.0%
enumerate 23 2.0% 23 2.0% 0.0%
dict items 22 1.9% 22 1.9% 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.

6,394,712 27.5% 6,394,712 27.5% 0.0%
hit

Specialized instructions that complete.

16,822,305 72.4% 16,822,305 72.4% 0.0%
miss

Specialized instructions that deopt.

3,634 0.0% 3,634 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 2,164 43.9% 2,164 43.9% 0.0%
Failure 2,764 56.1% 2,764 56.1% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
class method obj 1,706 61.7% 1,706 61.7% 0.0%
method 769 27.8% 769 27.8% 0.0%
class attr simple 141 5.1% 141 5.1% 0.0%
metaclass attribute 100 3.6% 100 3.6% 0.0%
overriding descriptor 48 1.7% 48 1.7% 0.0%

LOAD_GLOBAL

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

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

500 0.0% 500 0.0% 0.0%
hit

Specialized instructions that complete.

73,324,051 100.0% 73,324,051 100.0% 0.0%
miss

Specialized instructions that deopt.

1,858 0.0% 1,858 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 3,166 100.0% 3,166 100.0% 0.0%
Failure 0 0.0% 0 0.0%

LOAD_METHOD

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

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

2,336,234 99.9% 2,336,234 99.9% 0.0%
miss

Specialized instructions that deopt.

128 0.0% 128 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 1,188 53.8% 1,188 53.8% 0.0%
Failure 1,020 46.2% 1,020 46.2% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 931 91.3% 931 91.3% 0.0%
kind 18 2 0.2% 2 0.2% 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.

260 100.0% 260 100.0% 0.0%

LOAD_SUPER_METHOD

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

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

2 50.0% 2 50.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 2 100.0% 2 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.

1,552 6.3% 1,552 6.3% 0.0%
hit

Specialized instructions that complete.

21,310 86.0% 21,310 86.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 1,492 77.9% 1,492 77.9% 0.0%
Failure 423 22.1% 423 22.1% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
overriding descriptor 315 74.5% 315 74.5% 0.0%
method 86 20.3% 86 20.3% 0.0%
property 22 5.2% 22 5.2% 0.0%

STORE_SLICE

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

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

258 100.0% 258 100.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.

36 0.0% 36 0.0% 0.0%
hit

Specialized instructions that complete.

2,125,952 100.0% 2,125,952 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 32 94.1% 32 94.1% 0.0%
Failure 2 5.9% 2 5.9% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
out of range 2 100.0% 2 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.

5,667,555 22.3% 5,667,555 22.3% 0.0%
hit

Specialized instructions that complete.

19,798,290 77.7% 19,798,290 77.7% 0.0%
miss

Specialized instructions that deopt.

2,123 0.0% 2,123 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 868 32.5% 868 32.5% 0.0%
Failure 1,801 67.5% 1,801 67.5% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
dict 1,108 61.5% 1,108 61.5% 0.0%
mapping 566 31.4% 566 31.4% 0.0%
tuple 85 4.7% 85 4.7% 0.0%
sequence 42 2.3% 42 2.3% 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.

438 0.0% 438 0.0% 0.0%
hit

Specialized instructions that complete.

13,747,883 100.0% 13,747,883 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 184 80.0% 184 80.0% 0.0%
Failure 46 20.0% 46 20.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
iterator 46 100.0% 46 100.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.

221,155,661 28.5% 221,667,771 28.5% 0.2%
Basic

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

537,619,355 69.2% 537,107,343 69.1% -0.1%
Not specialized

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

17,945,857 2.3% 17,945,857 2.3% 0.0%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

14,547 0.0% 14,547 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
LOAD_ATTR 6,394,712 35.7% 6,394,712 35.7% 0.0%
TO_BOOL 5,667,555 31.6% 5,667,555 31.6% 0.0%
FOR_ITER 2,596,181 14.5% 2,596,181 14.5% 0.0%
LOAD_METHOD 2,336,234 13.0% 2,336,234 13.0% 0.0%
COMPARE_OP 709,239 4.0% 709,239 4.0% 0.0%
BINARY_SUBSCR 200,453 1.1% 200,453 1.1% 0.0%
BINARY_OP 8,438 0.0% 8,438 0.0% 0.0%
CONTAINS_OP 3,169 0.0% 3,169 0.0% 0.0%
CALL 1,736 0.0% 1,736 0.0% 0.0%
BINARY_SLICE 1,562 0.0% 1,562 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 3,500 23.6% 3,500 23.6% 0.0%
CALL_BOUND_METHOD_EXACT_ARGS 2,385 16.1% 2,385 16.1% 0.0%
TO_BOOL_STR 1,855 12.5% 1,855 12.5% 0.0%
FOR_ITER_LIST 1,601 10.8% 1,601 10.8% 0.0%
CALL_PY_EXACT_ARGS 1,569 10.6% 1,569 10.6% 0.0%
LOAD_GLOBAL_MODULE 962 6.5% 962 6.5% 0.0%
LOAD_GLOBAL_BUILTIN 896 6.0% 896 6.0% 0.0%
FOR_ITER_GEN 895 6.0% 895 6.0% 0.0%
RESUME 299 2.0% 299 2.0% 0.0%
RESUME_CHECK 299 2.0% 299 2.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 10,920,822 18.1% 10,920,822 18.1% 0.0%
Calls to Python functions inlined 49,280,114 81.9% 49,280,114 81.9% 0.0%
Calls via PyEval_EvalFrame (total) 10,920,822 18.1% 10,920,822 18.1% 0.0%
Calls via PyEval_EvalFrame (vector) 2,435,484 4.0% 2,435,484 4.0% 0.0%
Calls via PyEval_EvalFrame (generator) 8,485,338 14.1% 8,485,338 14.1% 0.0%
Calls via PyEval_EvalFrame (legacy) 2,123,195 3.5% 2,123,195 3.5% 0.0%
Calls via PyEval_EvalFrame (function vectorcall) 312,271 0.5% 312,271 0.5% 0.0%
Calls via PyEval_EvalFrame (build class) 18 0.0% 18 0.0% 0.0%
Calls via PyEval_EvalFrame (slot) 417 0.0% 417 0.0% 0.0%
Calls via PyEval_EvalFrame (function ex) 324 0.0% 324 0.0% 0.0%
Calls via PyEval_EvalFrame (api) 972 0.0% 972 0.0% 0.0%
Calls via PyEval_EvalFrame (method) 0 0.0% 0 0.0%
Frame objects created 7,165 0.0% 7,165 0.0% 0.0%
Frames pushed 19,579,986 32.5% 19,579,986 32.5% 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 961 729 -24.1%
Method cache collisions 7,377 6,174 -16.3%
Method cache misses 8,149 7,305 -10.4%
Method cache dunder hits 4,437,132 4,437,364 0.0%
Method cache hits 19,400,204 19,401,048 0.0%
Immortal increfs 60,825,632 8.4% 60,823,758 8.4% -0.0%
Immortal decrefs 100,581,956 11.9% 100,580,052 11.9% -0.0%
Frees 23,678,773 23,678,818 0.0%
Mortal increfs 265,923,916 36.8% 265,923,634 36.8% -0.0%
Mortal decrefs 270,223,882 31.9% 270,223,626 31.9% -0.0%
Allocations from freelist 33,039,936 61.5% 33,039,936 61.5% 0.0%
Frees to freelist 33,038,390 33,038,390 0.0%
Allocations 20,687,806 38.5% 20,687,806 38.5% 0.0%
Allocations to 512 bytes 20,682,885 38.5% 20,682,885 38.5% 0.0%
Allocations to 4 kbytes 2,402 0.0% 2,402 0.0% 0.0%
Allocations over 4 kbytes 2,519 0.0% 2,519 0.0% 0.0%
Inline values 2,058 2,058 0.0%
Interpreter mortal increfs 349,939,231 48.4% 349,939,231 48.4% 0.0%
Interpreter mortal decrefs 389,078,878 46.0% 389,078,878 46.0% 0.0%
Interpreter immortal increfs 46,123,609 6.4% 46,123,609 6.4% 0.0%
Interpreter immortal decrefs 86,369,626 10.2% 86,369,626 10.2% 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 428 24,943 3,695,704 124,927 737,104 428 24,943 3,695,704 124,927 737,104
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.

2,212 2,212 0.0%
Traces created

The number of traces that were successfully created.

231 10.4% 231 10.4% 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.

2,114 95.6% 2,114 95.6% 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.

1,981 89.6% 1,981 89.6% 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.

2 0.1% 2 0.1% 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

78,482,000 78,482,000 0.0%
Uops executed

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

816,123,111 1,039.9% 816,123,111 1,039.9% 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.

231 231 0.0%
Optimizer successes

The number of traces that were successfully optimized.

231 100.0% 231 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 97 42.0% 97 42.0% 0.0%
<= 16 61 26.4% 61 26.4% 0.0%
<= 32 44 19.0% 44 19.0% 0.0%
<= 64 2 0.9% 2 0.9% 0.0%
<= 128 25 10.8% 25 10.8% 0.0%
<= 256 1 0.4% 1 0.4% 0.0%
<= 512 1 0.4% 1 0.4% 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 21 9.1% 21 9.1% 0.0%
<= 8 90 39.0% 90 39.0% 0.0%
<= 16 48 20.8% 48 20.8% 0.0%
<= 32 45 19.5% 45 19.5% 0.0%
<= 64 22 9.5% 22 9.5% 0.0%
<= 128 4 1.7% 4 1.7% 0.0%
<= 256 1 0.4% 1 0.4% 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
_MAKE_WARM 78,482,904 78,482,904 0.0%
_START_EXECUTOR 78,482,000 78,482,000 0.0%
_SET_IP 76,057,525 76,057,525 0.0%
_CHECK_PERIODIC 48,862,595 48,862,595 0.0%
_EXIT_TRACE 46,628,717 46,628,717 0.0%
_CHECK_VALIDITY_AND_SET_IP 43,546,481 43,546,481 0.0%
_CHECK_VALIDITY 41,920,079 41,920,079 0.0%
_POP_TOP 41,394,298 41,394,298 0.0%
_PUSH_FRAME 37,099,219 37,099,219 0.0%
_FOR_ITER_GEN_FRAME 31,852,984 31,852,984 0.0%
_DYNAMIC_EXIT 31,852,388 31,852,388 0.0%
_TIER2_RESUME_CHECK 31,816,929 31,816,929 0.0%
_LOAD_FAST 23,706,956 23,706,956 0.0%
_STORE_FAST 16,682,720 16,682,720 0.0%
_GUARD_IS_FALSE_POP 10,401,152 10,401,152 0.0%
_PUSH_NULL 9,722,354 9,722,354 0.0%
_LOAD_CONST_INLINE 8,748,483 8,748,483 0.0%
_LOAD_FAST_1 8,466,943 8,466,943 0.0%
_GUARD_NOT_EXHAUSTED_LIST 8,411,171 8,411,171 0.0%
_ITER_CHECK_LIST 8,411,171 8,411,171 0.0%
_LOAD_CONST_INLINE_BORROW 8,344,123 8,344,123 0.0%
_CHECK_FUNCTION 8,238,698 8,238,698 0.0%
_IS_OP 6,941,725 6,941,725 0.0%
_LOAD_FAST_3 6,762,025 6,762,025 0.0%
_LOAD_FAST_2 6,507,998 6,507,998 0.0%
_ITER_NEXT_LIST 6,290,822 6,290,822 0.0%
_LOAD_FAST_0 5,313,821 5,313,821 0.0%
_RESUME_CHECK 5,247,650 5,247,650 0.0%
_SAVE_RETURN_OFFSET 5,246,831 5,246,831 0.0%
_GUARD_IS_TRUE_POP 5,117,097 5,117,097 0.0%
_FOR_ITER_TIER_TWO 4,617,958 4,617,958 0.0%
_LOAD_FAST_7 4,480,341 4,480,341 0.0%
_LOAD_METHOD 4,036,158 4,036,158 0.0%
_RETURN_VALUE 3,847,998 3,847,998 0.0%
_TO_BOOL_LIST 3,325,353 3,325,353 0.0%
_GET_ITER 2,723,509 2,723,509 0.0%
_CALL_BUILTIN_O 2,684,978 2,684,978 0.0%
_CALL_TYPE_1 2,683,118 2,683,118 0.0%
_CHECK_FUNCTION_VERSION 2,558,799 2,558,799 0.0%
_PY_FRAME_GENERAL 2,557,161 2,557,161 0.0%
_CALL_NON_PY_GENERAL 2,179,968 2,179,968 0.0%
_CHECK_IS_NOT_PY_CALLABLE 2,179,968 2,179,968 0.0%
_UNPACK_SEQUENCE_TUPLE 2,168,066 2,168,066 0.0%
_CHECK_FUNCTION_VERSION_INLINE 1,923,999 1,923,999 0.0%
_LOAD_FAST_4 1,923,999 1,923,999 0.0%
_COPY_FREE_VARS 1,923,180 1,923,180 0.0%
_STORE_SUBSCR_DICT 1,923,180 1,923,180 0.0%
_CHECK_STACK_SPACE_OPERAND 1,923,180 1,923,180 0.0%
_INIT_CALL_PY_EXACT_ARGS_4 1,923,180 1,923,180 0.0%
_LOAD_FAST_6 1,923,180 1,923,180 0.0%
_TO_BOOL 1,330,690 1,330,690 0.0%
_TO_BOOL_INT 1,330,539 1,330,539 0.0%
_TO_BOOL_BOOL 897,416 897,416 0.0%
_GUARD_TYPE_VERSION 839,046 839,046 0.0%
_LOAD_METHOD_NO_DICT 838,227 838,227 0.0%
_CALL_BUILTIN_FAST 831,842 831,842 0.0%
_LOAD_SMALL_INT_1 764,937 764,937 0.0%
_TO_BOOL_STR 764,033 764,033 0.0%
_CALL_LEN 764,033 764,033 0.0%
_CHECK_METHOD_VERSION_KW 764,033 764,033 0.0%
_COMPARE_OP_INT 764,033 764,033 0.0%
_EXPAND_METHOD_KW 764,033 764,033 0.0%
_GUARD_NOS_INT 764,033 764,033 0.0%
_PY_FRAME_KW 764,033 764,033 0.0%
_BUILD_TUPLE 696,558 696,558 0.0%
_GUARD_NOT_EXHAUSTED_TUPLE 633,981 633,981 0.0%
_CONTAINS_OP_SET 633,981 633,981 0.0%
_UNPACK_SEQUENCE_TWO_TUPLE 633,981 633,981 0.0%
_ITER_CHECK_TUPLE 633,981 633,981 0.0%
_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 203,427 203,427 0.0%
_STORE_FAST_3 168,706 168,706 0.0%
_CONTAINS_OP_DICT 167,068 167,068 0.0%
_STORE_FAST_1 68,628 68,628 0.0%
_LOAD_SMALL_INT 6,328 6,328 0.0%
_BUILD_MAP 2,457 2,457 0.0%
_LOAD_ATTR 2,457 2,457 0.0%
_LOAD_ATTR_SLOT 2,457 2,457 0.0%
_CHECK_FUNCTION_EXACT_ARGS 1,638 1,638 0.0%
_INIT_CALL_PY_EXACT_ARGS_1 1,638 1,638 0.0%
_LOAD_FAST_5 1,638 1,638 0.0%
_GUARD_NOT_EXHAUSTED_RANGE 905 905 0.0%
_ITER_CHECK_RANGE 905 905 0.0%
_LIST_APPEND 904 904 0.0%
_CALL_KW_NON_PY 904 904 0.0%
_CHECK_IS_NOT_PY_CALLABLE_KW 904 904 0.0%
_ITER_NEXT_RANGE 904 904 0.0%
_JUMP_TO_TOP 904 904 0.0%
_LOAD_SMALL_INT_2 904 904 0.0%
_LOAD_SMALL_INT_3 904 904 0.0%
_STORE_FAST_4 904 904 0.0%
_DEOPT 895 895 0.0%
_CALL_BUILTIN_CLASS 819 819 0.0%
_CALL_BUILTIN_FAST_WITH_KEYWORDS 819 819 0.0%
_CHECK_CALL_BOUND_METHOD_EXACT_ARGS 819 819 0.0%
_GUARD_IS_NOT_NONE_POP 819 819 0.0%
_INIT_CALL_BOUND_METHOD_EXACT_ARGS 819 819 0.0%
_INIT_CALL_PY_EXACT_ARGS_3 819 819 0.0%
_STORE_FAST_2 819 819 0.0%
_STORE_FAST_5 819 819 0.0%
_STORE_FAST_6 819 819 0.0%
_STORE_FAST_7 819 819 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 1 1 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 42 42 0.0%

Stats gathered on: 2025-01-22