Skip to content

Latest commit

 

History

History
4791 lines (4498 loc) · 97.9 KB

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

File metadata and controls

4791 lines (4498 loc) · 97.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
JUMP_BACKWARD 119,963 7 -100.0%
LOAD_FAST 70,944,657 70,944,657 0.0%
STORE_FAST 17,700,020 17,700,020 0.0%
LOAD_GLOBAL_BUILTIN 16,864,272 16,864,272 0.0%
PUSH_NULL 16,574,251 16,574,251 0.0%
RETURN_VALUE 16,267,342 16,267,342 0.0%
LOAD_FAST_LOAD_FAST 15,181,780 15,181,780 0.0%
RESUME_CHECK 14,880,917 14,880,917 0.0%
LOAD_ATTR_INSTANCE_VALUE 12,333,957 12,333,957 0.0%
LOAD_CONST_IMMORTAL 12,217,699 12,217,699 0.0%
LOAD_GLOBAL_MODULE 10,960,983 10,960,983 0.0%
STORE_ATTR_INSTANCE_VALUE 10,927,280 10,927,280 0.0%
POP_JUMP_IF_FALSE 10,283,705 10,283,705 0.0%
CALL_PY_EXACT_ARGS 9,178,099 9,178,099 0.0%
LOAD_SMALL_INT 8,721,204 8,721,204 0.0%
LOAD_METHOD_NO_DICT 7,029,628 7,029,628 0.0%
POP_TOP 6,788,419 6,788,419 0.0%
POP_JUMP_IF_TRUE 6,375,473 6,375,473 0.0%
NOP 5,339,327 5,339,327 0.0%
LOAD_DEREF 5,161,673 5,161,673 0.0%
LOAD_ATTR_MODULE 5,076,080 5,076,080 0.0%
LOAD_METHOD_WITH_VALUES 5,016,386 5,016,386 0.0%
BUILD_TUPLE 4,860,516 4,860,516 0.0%
TO_BOOL_BOOL 4,616,825 4,616,825 0.0%
BINARY_SUBSCR_DICT 3,696,350 3,696,350 0.0%
LOAD_METHOD 3,645,386 3,645,386 0.0%
POP_JUMP_IF_NOT_NONE 3,139,821 3,139,821 0.0%
ENTER_EXECUTOR 2,736,003 2,736,003 0.0%
CALL_ISINSTANCE 2,732,504 2,732,504 0.0%
LOAD_CONST_MORTAL 2,611,278 2,611,278 0.0%
CHECK_EXC_MATCH 2,603,988 2,603,988 0.0%
POP_EXCEPT 2,603,988 2,603,988 0.0%
PUSH_EXC_INFO 2,603,988 2,603,988 0.0%
TO_BOOL_LIST 2,407,510 2,407,510 0.0%
COMPARE_OP_INT 2,327,943 2,327,943 0.0%
CALL_NON_PY_GENERAL 2,300,566 2,300,566 0.0%
COPY_FREE_VARS 2,219,116 2,219,116 0.0%
CALL_LIST_APPEND 2,210,058 2,210,058 0.0%
COPY 2,080,570 2,080,570 0.0%
CALL_METHOD_DESCRIPTOR_FAST 2,024,575 2,024,575 0.0%
INTERPRETER_EXIT 1,949,784 1,949,784 0.0%
BUILD_LIST 1,762,091 1,762,091 0.0%
CALL_PY_GENERAL 1,694,965 1,694,965 0.0%
GET_ITER 1,665,236 1,665,236 0.0%
POP_JUMP_IF_NONE 1,565,094 1,565,094 0.0%
LOAD_ATTR_SLOT 1,558,665 1,558,665 0.0%
JUMP_BACKWARD_NO_INTERRUPT 1,558,662 1,558,662 0.0%
FOR_ITER_LIST 1,480,715 1,480,715 0.0%
CALL_BUILTIN_FAST 1,442,193 1,442,193 0.0%
CALL_TYPE_1 1,428,905 1,428,905 0.0%
CONTAINS_OP 1,277,990 1,277,990 0.0%
LOAD_ATTR 1,148,918 1,148,918 0.0%
CALL_LEN 1,138,255 1,138,255 0.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 1,137,773 1,137,773 0.0%
TO_BOOL_INT 1,049,003 1,049,003 0.0%
CALL_BUILTIN_CLASS 1,047,719 1,047,719 0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS 1,043,785 1,043,785 0.0%
BINARY_SUBSCR_GETITEM 1,042,244 1,042,244 0.0%
RAISE_VARARGS 1,042,216 1,042,216 0.0%
RERAISE 1,041,439 1,041,439 0.0%
BINARY_OP_SUBTRACT_INT 1,039,129 1,039,129 0.0%
CALL_BUILTIN_O 909,144 909,144 0.0%
CONTAINS_OP_DICT 842,652 842,652 0.0%
POP_ITER 819,558 819,558 0.0%
CALL_METHOD_DESCRIPTOR_O 785,558 785,558 0.0%
IS_OP 659,645 659,645 0.0%
STORE_SUBSCR_DICT 657,887 657,887 0.0%
BINARY_SUBSCR_STR_INT 620,074 620,074 0.0%
CALL_KW_NON_PY 611,226 611,226 0.0%
BINARY_OP 531,977 531,977 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 522,728 522,728 0.0%
IMPORT_NAME 521,885 521,885 0.0%
CALL_FUNCTION_EX 520,656 520,656 0.0%
LOAD_SUPER_METHOD_METHOD 520,331 520,331 0.0%
EXIT_INIT_CHECK 519,821 519,821 0.0%
CALL_ALLOC_AND_ENTER_INIT 519,821 519,821 0.0%
BINARY_OP_MULTIPLY_INT 519,562 519,562 0.0%
JUMP_FORWARD 491,336 491,336 0.0%
STORE_FAST_STORE_FAST 405,540 405,540 0.0%
BINARY_OP_ADD_INT 399,097 399,097 0.0%
BINARY_SLICE 399,057 399,057 0.0%
UNPACK_SEQUENCE_TUPLE 393,108 393,108 0.0%
UNPACK_SEQUENCE_LIST 390,313 390,313 0.0%
CALL_STR_1 389,489 389,489 0.0%
BUILD_MAP 366,637 366,637 0.0%
TO_BOOL_STR 364,589 364,589 0.0%
DICT_MERGE 353,685 353,685 0.0%
FOR_ITER_TUPLE 272,450 272,450 0.0%
CALL_KW_PY 268,096 268,096 0.0%
MAKE_CELL 266,577 266,577 0.0%
STORE_DEREF 265,023 265,023 0.0%
COMPARE_OP 264,590 264,590 0.0%
SET_FUNCTION_ATTRIBUTE 261,915 261,915 0.0%
MAKE_FUNCTION 261,656 261,656 0.0%
BINARY_SUBSCR_LIST_INT 96,058 96,058 0.0%
TO_BOOL_NONE 94,052 94,052 0.0%
TO_BOOL 93,726 93,726 0.0%
BINARY_SUBSCR_TUPLE_INT 92,422 92,422 0.0%
CONTAINS_OP_SET 50,895 50,895 0.0%
FORMAT_SIMPLE 21,716 21,716 0.0%
BUILD_STRING 21,716 21,716 0.0%
FOR_ITER_RANGE 16,378 16,378 0.0%
SWAP 8,288 8,288 0.0%
FOR_ITER 8,205 8,205 0.0%
EXTENDED_ARG 7,803 7,803 0.0%
UNPACK_SEQUENCE_TWO_TUPLE 7,057 7,057 0.0%
COMPARE_OP_STR 7,003 7,003 0.0%
CALL_BOUND_METHOD_EXACT_ARGS 5,669 5,669 0.0%
BINARY_OP_INPLACE_ADD_UNICODE 3,885 3,885 0.0%
BINARY_OP_ADD_UNICODE 3,626 3,626 0.0%
LIST_APPEND 3,108 3,108 0.0%
UNARY_INVERT 2,335 2,335 0.0%
LOAD_FAST_AND_CLEAR 1,813 1,813 0.0%
BINARY_SUBSCR 1,398 1,398 0.0%
STORE_SUBSCR 1,090 1,090 0.0%
IMPORT_FROM 777 777 0.0%
LOAD_SUPER_ATTR_ATTR 777 777 0.0%
CALL_INTRINSIC_1 518 518 0.0%
LIST_EXTEND 518 518 0.0%
CALL_BOUND_METHOD_GENERAL 518 518 0.0%
CALL 349 349 0.0%
NOT_TAKEN 300 300 0.0%
CALL_KW_BOUND_METHOD 259 259 0.0%
LOAD_GLOBAL 163 163 0.0%
BINARY_OP_SUBTRACT_FLOAT 64 64 0.0%
LOAD_CONST 31 31 0.0%
UNPACK_SEQUENCE 25 25 0.0%
STORE_ATTR 18 18 0.0%
CALL_KW 11 11 0.0%
RESUME 8 8 0.0%
STORE_SUBSCR_LIST_INT 7 7 0.0%
LOAD_ATTR_PROPERTY 6 6 0.0%
STORE_FAST_LOAD_FAST 5 5 0.0%
UNARY_NOT 4 4 0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 2 2 0.0%
LOAD_SUPER_ATTR 1 1 0.0%
LOAD_SUPER_METHOD 1 1 0.0%
CALL_TUPLE_1 1 1 0.0%
JUMP_BACKWARD_JIT 117,632
JUMP_BACKWARD_NO_JIT 2,331

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.

531,515 18.4% 531,515 18.4% 0.0%
hit

Specialized instructions that complete.

2,349,263 81.5% 2,349,263 81.5% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 27 5.8% 27 5.8% 0.0%
Failure 435 94.2% 435 94.2% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
and int 178 40.9% 178 40.9% 0.0%
remainder 140 32.2% 140 32.2% 0.0%
multiply different types 93 21.4% 93 21.4% 0.0%
or 24 5.5% 24 5.5% 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.

399,057 100.0% 399,057 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.

1,306 0.0% 1,306 0.0% 0.0%
hit

Specialized instructions that complete.

7,924,052 100.0% 7,924,052 100.0% 0.0%
miss

Specialized instructions that deopt.

7 0.0% 7 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 24 26.1% 24 26.1% 0.0%
Failure 68 73.9% 68 73.9% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
out of range 44 64.7% 44 64.7% 0.0%
list slice 24 35.3% 24 35.3% 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.

27 0.0% 27 0.0% 0.0%
hit

Specialized instructions that complete.

31,251,679 100.0% 31,251,679 100.0% 0.0%
miss

Specialized instructions that deopt.

48 0.0% 48 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 323 100.0% 323 100.0% 0.0%
Failure 0 0.0% 0 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
init not simple 1 1 / 0 !! 1 1 / 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.

3 27.3% 3 27.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 8 100.0% 8 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.

264,190 5.2% 264,190 5.2% 0.0%
hit

Specialized instructions that complete.

4,811,576 94.8% 4,811,576 94.8% 0.0%
miss

Specialized instructions that deopt.

1 0.0% 1 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 25 6.2% 25 6.2% 0.0%
Failure 376 93.8% 376 93.8% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
different types 376 100.0% 376 100.0% 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.

1,277,422 34.1% 1,277,422 34.1% 0.0%
hit

Specialized instructions that complete.

2,467,017 65.9% 2,467,017 65.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 2 0.4% 2 0.4% 0.0%
Failure 566 99.6% 566 99.6% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
str 360 63.6% 360 63.6% 0.0%
tuple 138 24.4% 138 24.4% 0.0%
list 68 12.0% 68 12.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.

8,056 0.5% 8,056 0.5% 0.0%
hit

Specialized instructions that complete.

1,769,527 99.5% 1,769,527 99.5% 0.0%
miss

Specialized instructions that deopt.

16 0.0% 16 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 6 4.0% 6 4.0% 0.0%
Failure 143 96.0% 143 96.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
dict keys 88 61.5% 88 61.5% 0.0%
zip 45 31.5% 45 31.5% 0.0%
enumerate 8 5.6% 8 5.6% 0.0%
dict values 2 1.4% 2 1.4% 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.

1,138,432 2.8% 1,138,432 2.8% 0.0%
hit

Specialized instructions that complete.

39,281,343 97.1% 39,281,343 97.1% 0.0%
miss

Specialized instructions that deopt.

14,270 0.0% 14,270 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 252 42.1% 252 42.1% 0.0%
Failure 347 57.9% 347 57.9% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
method 213 61.4% 213 61.4% 0.0%
mutable class 134 38.6% 134 38.6% 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.

14 0.0% 14 0.0% 0.0%
deopt

Specialized instructions that deopt.

78 0.0% 78 0.0% 0.0%
hit

Specialized instructions that complete.

27,825,177 100.0% 27,825,177 100.0% 0.0%
miss

Specialized instructions that deopt.

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

3,644,211 99.7% 3,644,211 99.7% 0.0%
miss

Specialized instructions that deopt.

10,049 0.3% 10,049 0.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 118 9.9% 118 9.9% 0.0%
Failure 1,070 90.1% 1,070 90.1% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 780 72.9% 780 72.9% 0.0%
kind 18 134 12.5% 134 12.5% 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.

521,108 100.0% 521,108 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%

LOAD_SUPER_METHOD

specialization stats for LOAD_SUPER_METHOD family
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
hit

Specialized instructions that complete.

10,919,510 99.9% 10,919,510 99.9% 0.0%
miss

Specialized instructions that deopt.

7,770 0.1% 7,770 0.1% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 18 100.0% 18 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.

1,044 0.2% 1,044 0.2% 0.0%
hit

Specialized instructions that complete.

658,128 99.8% 658,128 99.8% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 1 2.2% 1 2.2% 0.0%
Failure 45 97.8% 45 97.8% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
list slice 45 100.0% 45 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.

93,537 0.8% 93,537 0.8% 0.0%
hit

Specialized instructions that complete.

11,721,245 99.2% 11,721,245 99.2% 0.0%
miss

Specialized instructions that deopt.

794 0.0% 794 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 33 17.4% 33 17.4% 0.0%
Failure 157 82.6% 157 82.6% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
tuple 92 58.6% 92 58.6% 0.0%
dict 44 28.0% 44 28.0% 0.0%
sequence 21 13.4% 21 13.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.

1 0.0% 1 0.0% 0.0%
hit

Specialized instructions that complete.

1,947,541 100.0% 1,947,541 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 24 100.0% 24 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.

153,847,747 40.5% 153,967,710 40.5% 0.1%
Basic

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

218,673,200 57.6% 218,553,244 57.5% -0.1%
Not specialized

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

7,372,905 1.9% 7,372,905 1.9% 0.0%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

33,318 0.0% 33,318 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_METHOD 3,644,211 49.5% 3,644,211 49.5% 0.0%
CONTAINS_OP 1,277,422 17.4% 1,277,422 17.4% 0.0%
LOAD_ATTR 1,138,432 15.5% 1,138,432 15.5% 0.0%
BINARY_OP 531,515 7.2% 531,515 7.2% 0.0%
BINARY_SLICE 399,057 5.4% 399,057 5.4% 0.0%
COMPARE_OP 264,190 3.6% 264,190 3.6% 0.0%
TO_BOOL 93,537 1.3% 93,537 1.3% 0.0%
FOR_ITER 8,056 0.1% 8,056 0.1% 0.0%
BINARY_SUBSCR 1,306 0.0% 1,306 0.0% 0.0%
STORE_SUBSCR 1,044 0.0% 1,044 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_INSTANCE_VALUE 14,270 42.5% 14,270 42.5% 0.0%
LOAD_METHOD_WITH_VALUES 10,049 29.9% 10,049 29.9% 0.0%
STORE_ATTR_INSTANCE_VALUE 7,770 23.1% 7,770 23.1% 0.0%
TO_BOOL_NONE 770 2.3% 770 2.3% 0.0%
RESUME 285 0.8% 285 0.8% 0.0%
RESUME_CHECK 285 0.8% 285 0.8% 0.0%
LOAD_GLOBAL_BUILTIN 78 0.2% 78 0.2% 0.0%
CALL_PY_EXACT_ARGS 48 0.1% 48 0.1% 0.0%
TO_BOOL_STR 21 0.1% 21 0.1% 0.0%
FOR_ITER_LIST 16 0.0% 16 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 1,949,856 11.6% 1,949,856 11.6% 0.0%
Calls to Python functions inlined 14,839,887 88.4% 14,839,887 88.4% 0.0%
Calls via PyEval_EvalFrame (total) 1,949,856 11.6% 1,949,856 11.6% 0.0%
Calls via PyEval_EvalFrame (vector) 1,949,856 11.6% 1,949,856 11.6% 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) 1,949,856 11.6% 1,949,856 11.6% 0.0%
Calls via PyEval_EvalFrame (build class) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (slot) 36 0.0% 36 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 1,565,669 9.3% 1,565,669 9.3% 0.0%
Frames pushed 17,309,564 103.1% 17,309,564 103.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 156 371 137.8%
Method cache misses 1,421,056 1,343,540 -5.5%
Method cache collisions 1,420,375 1,343,177 -5.4%
Method cache hits 7,467,124 7,544,640 1.0%
Immortal increfs 58,293,245 14.3% 58,216,862 14.3% -0.1%
Immortal decrefs 68,050,549 14.7% 67,974,079 14.7% -0.1%
Mortal increfs 129,703,319 31.9% 129,625,141 31.9% -0.1%
Mortal decrefs 136,401,004 29.4% 136,322,891 29.4% -0.1%
Method cache dunder hits 4,291,562 4,291,347 -0.0%
Frees 25,434,679 25,434,694 0.0%
Allocations from freelist 19,431,388 43.3% 19,431,388 43.3% 0.0%
Frees to freelist 19,432,466 19,432,466 0.0%
Allocations 25,434,395 56.7% 25,434,395 56.7% 0.0%
Allocations to 512 bytes 25,153,358 56.1% 25,153,358 56.1% 0.0%
Allocations to 4 kbytes 274,301 0.6% 274,301 0.6% 0.0%
Allocations over 4 kbytes 6,736 0.0% 6,736 0.0% 0.0%
Inline values 1,300,189 1,300,189 0.0%
Interpreter mortal increfs 162,311,841 39.9% 162,311,841 39.9% 0.0%
Interpreter mortal decrefs 193,168,972 41.7% 193,168,972 41.7% 0.0%
Interpreter immortal increfs 56,447,519 13.9% 56,447,519 13.9% 0.0%
Interpreter immortal decrefs 66,036,710 14.2% 66,036,710 14.2% 0.0%
Materialize dict (on request) 0 0.0% 0 0.0%
Materialize dict (new key) 518 0.0% 518 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 1,037 1,557,790 29,431,033 691,427 1,953,183 1,037 1,557,790 29,431,276 691,364 1,953,183
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.

667 667 0.0%
Traces created

The number of traces that were successfully created.

323 48.4% 323 48.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.

449 67.3% 449 67.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 abandoned because it it too short.

344 51.6% 344 51.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.

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

5,687,548 5,687,548 0.0%
Uops executed

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

220,541,474 3,877.6% 220,541,474 3,877.6% 0.0%
Base Count Base Ratio Head Count Head Ratio Change
Optimizer attempts

The number of times the trace optimizer (_Py_uop_analyze_and_optimize) was run.

323 323 0.0%
Optimizer successes

The number of traces that were successfully optimized.

323 100.0% 323 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 42 13.0% 42 13.0% 0.0%
<= 16 21 6.5% 21 6.5% 0.0%
<= 32 87 26.9% 87 26.9% 0.0%
<= 64 107 33.1% 107 33.1% 0.0%
<= 128 64 19.8% 64 19.8% 0.0%
<= 256 2 0.6% 2 0.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 0 0.0% 0 0.0%
<= 8 63 19.5% 63 19.5% 0.0%
<= 16 0 0.0% 0 0.0%
<= 32 171 52.9% 171 52.9% 0.0%
<= 64 66 20.4% 66 20.4% 0.0%
<= 128 22 6.8% 22 6.8% 0.0%
<= 256 1 0.3% 1 0.3% 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 24,972,583 24,972,583 0.0%
_CHECK_VALIDITY 22,841,590 22,841,590 0.0%
_LOAD_FAST 7,894,329 7,894,329 0.0%
_MAKE_WARM 7,568,476 7,568,476 0.0%
_CHECK_PERIODIC 6,950,430 6,950,430 0.0%
_LOAD_FAST_1 6,565,933 6,565,933 0.0%
_CHECK_MANAGED_OBJECT_HAS_VALUES 5,871,741 5,871,741 0.0%
_LOAD_ATTR_INSTANCE_VALUE 5,871,741 5,871,741 0.0%
_CHECK_VALIDITY_AND_SET_IP 5,706,634 5,706,634 0.0%
_START_EXECUTOR 5,687,548 5,687,548 0.0%
_GUARD_IS_TRUE_POP 5,577,134 5,577,134 0.0%
_GUARD_TYPE_VERSION 5,561,816 5,561,816 0.0%
_LOAD_CONST_INLINE 4,943,052 4,943,052 0.0%
_LOAD_FAST_0 4,239,581 4,239,581 0.0%
_EXIT_TRACE 3,941,202 3,941,202 0.0%
_GUARD_IS_FALSE_POP 3,627,822 3,627,822 0.0%
_LOAD_FAST_2 3,225,001 3,225,001 0.0%
_LOAD_DEREF 3,161,358 3,161,358 0.0%
_STORE_FAST 3,161,358 3,161,358 0.0%
_LOAD_FAST_4 3,159,060 3,159,060 0.0%
_LOAD_CONST_INLINE_BORROW 3,088,450 3,088,450 0.0%
_GUARD_NOT_EXHAUSTED_LIST 2,815,357 2,815,357 0.0%
_ITER_CHECK_LIST 2,815,357 2,815,357 0.0%
_PUSH_NULL 2,682,991 2,682,991 0.0%
_PUSH_FRAME 2,130,244 2,130,244 0.0%
_SAVE_RETURN_OFFSET 2,130,244 2,130,244 0.0%
_POP_TOP 2,077,070 2,077,070 0.0%
_JUMP_TO_TOP 1,880,928 1,880,928 0.0%
_CHECK_FUNCTION_EXACT_ARGS 1,877,494 1,877,494 0.0%
_CHECK_FUNCTION_VERSION 1,877,494 1,877,494 0.0%
_DYNAMIC_EXIT 1,746,344 1,746,344 0.0%
_COMPARE_OP_INT 1,703,468 1,703,468 0.0%
_ITER_NEXT_LIST 1,666,117 1,666,117 0.0%
_LOAD_SMALL_INT_0 1,656,270 1,656,270 0.0%
_TIER2_RESUME_CHECK 1,524,920 1,524,920 0.0%
_CHECK_STACK_SPACE 1,493,594 1,493,594 0.0%
_INIT_CALL_PY_EXACT_ARGS_1 1,493,594 1,493,594 0.0%
_CHECK_FUNCTION 1,486,573 1,486,573 0.0%
_GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 1,362,444 1,362,444 0.0%
_GUARD_KEYS_VERSION 1,362,444 1,362,444 0.0%
_LOAD_METHOD_WITH_VALUES 1,362,444 1,362,444 0.0%
_STORE_FAST_6 1,277,478 1,277,478 0.0%
_FORMAT_SIMPLE 1,273,284 1,273,284 0.0%
_BUILD_STRING 1,273,284 1,273,284 0.0%
_STORE_FAST_1 1,150,595 1,150,595 0.0%
_STORE_FAST_4 1,148,898 1,148,898 0.0%
_STORE_FAST_2 1,140,598 1,140,598 0.0%
_CONTAINS_OP_DICT 1,104,775 1,104,775 0.0%
_BUILD_LIST 1,104,533 1,104,533 0.0%
_TO_BOOL_LIST 1,101,689 1,101,689 0.0%
_LOAD_METHOD_NO_DICT 1,056,753 1,056,753 0.0%
_IS_OP 1,028,926 1,028,926 0.0%
_CALL_BUILTIN_FAST 1,028,926 1,028,926 0.0%
_TO_BOOL_BOOL 981,865 981,865 0.0%
_LOAD_FAST_3 970,621 970,621 0.0%
_TO_BOOL_STR 937,960 937,960 0.0%
_BINARY_SUBSCR_STR_INT 937,060 937,060 0.0%
_CONTAINS_OP 937,060 937,060 0.0%
_LOAD_SMALL_INT_1 935,155 935,155 0.0%
_GUARD_IS_NONE_POP 886,684 886,684 0.0%
_STORE_FAST_3 802,666 802,666 0.0%
_FOR_ITER_TIER_TWO 773,678 773,678 0.0%
_UNPACK_SEQUENCE_TWO_TUPLE 773,163 773,163 0.0%
_COMPARE_OP_STR 773,163 773,163 0.0%
_GUARD_BOTH_UNICODE 773,163 773,163 0.0%
_BINARY_SUBSCR_DICT 720,641 720,641 0.0%
_LOAD_FAST_6 672,420 672,420 0.0%
_GUARD_NOT_EXHAUSTED_RANGE 637,410 637,410 0.0%
_ITER_CHECK_RANGE 637,410 637,410 0.0%
_ITER_NEXT_RANGE 636,642 636,642 0.0%
_BINARY_SUBSCR_LIST_INT 552,005 552,005 0.0%
_CALL_LEN 551,255 551,255 0.0%
_GUARD_NOS_INT 551,255 551,255 0.0%
_LOAD_ATTR 550,805 550,805 0.0%
_CONTAINS_OP_SET 468,695 468,695 0.0%
_GUARD_BOTH_INT 384,413 384,413 0.0%
_COPY_FREE_VARS 383,900 383,900 0.0%
_RESUME_CHECK 383,900 383,900 0.0%
_UNPACK_SEQUENCE_TUPLE 383,900 383,900 0.0%
_BINARY_OP_ADD_INT 383,900 383,900 0.0%
_BINARY_SLICE 383,900 383,900 0.0%
_CHECK_CALL_BOUND_METHOD_EXACT_ARGS 383,900 383,900 0.0%
_CHECK_STACK_SPACE_OPERAND 383,900 383,900 0.0%
_GUARD_IS_NOT_NONE_POP 383,900 383,900 0.0%
_INIT_CALL_BOUND_METHOD_EXACT_ARGS 383,900 383,900 0.0%
_INIT_CALL_PY_EXACT_ARGS_2 383,900 383,900 0.0%
_LOAD_FAST_5 383,900 383,900 0.0%
_STORE_FAST_5 383,900 383,900 0.0%
_CALL_METHOD_DESCRIPTOR_O 383,892 383,892 0.0%
_STORE_FAST_0 383,892 383,892 0.0%
_BUILD_TUPLE 336,741 336,741 0.0%
_CALL_METHOD_DESCRIPTOR_FAST 336,210 336,210 0.0%
_GUARD_NOT_EXHAUSTED_TUPLE 254,100 254,100 0.0%
_ITER_CHECK_TUPLE 254,100 254,100 0.0%
_CHECK_FUNCTION_VERSION_KW 252,750 252,750 0.0%
_PY_FRAME_KW 252,750 252,750 0.0%
_TO_BOOL_NONE 168,546 168,546 0.0%
_CALL_NON_PY_GENERAL 168,546 168,546 0.0%
_CHECK_IS_NOT_PY_CALLABLE 168,546 168,546 0.0%
_GET_ITER 168,312 168,312 0.0%
_CALL_KW_NON_PY 168,105 168,105 0.0%
_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 168,105 168,105 0.0%
_CHECK_IS_NOT_PY_CALLABLE_KW 168,105 168,105 0.0%
_LOAD_FAST_7 168,105 168,105 0.0%
_STORE_FAST_7 168,105 168,105 0.0%
_TO_BOOL 167,355 167,355 0.0%
_BINARY_SUBSCR_TUPLE_INT 167,205 167,205 0.0%
_BUILD_MAP 166,905 166,905 0.0%
_DICT_MERGE 166,905 166,905 0.0%
_STORE_SUBSCR_DICT 234 234 0.0%
_DEOPT 2 2 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 43 43 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 21 21 0.0%

Stats gathered on: 2025-01-22