Skip to content

Latest commit

 

History

History
4078 lines (3802 loc) · 81.8 KB

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

File metadata and controls

4078 lines (3802 loc) · 81.8 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 295,137 120 -100.0%
POP_JUMP_IF_TRUE 24,357 24,369 0.0%
CALL_METHOD_DESCRIPTOR_FAST 28,017 28,029 0.0%
FOR_ITER_LIST 41,577 41,589 0.0%
LOAD_METHOD_NO_DICT 53,877 53,889 0.0%
TO_BOOL_BOOL 64,957 64,969 0.0%
STORE_FAST 150,837 150,849 0.0%
LOAD_FAST 73,491,594 73,491,618 0.0%
LOAD_SMALL_INT 58,294,440 58,294,440 0.0%
INSTRUMENTED_LINE 58,270,440 58,270,440 0.0%
POP_JUMP_IF_FALSE 29,510,820 29,510,820 0.0%
PUSH_NULL 29,276,040 29,276,040 0.0%
CALL_PY_EXACT_ARGS 29,195,940 29,195,940 0.0%
BINARY_OP_SUBTRACT_INT 29,147,340 29,147,340 0.0%
COMPARE_OP_INT 29,140,140 29,140,140 0.0%
INSTRUMENTED_RESUME 29,134,740 29,134,740 0.0%
INSTRUMENTED_RETURN_VALUE 29,134,440 29,134,440 0.0%
LOAD_GLOBAL_MODULE 14,686,020 14,686,020 0.0%
LOAD_GLOBAL 14,570,000 14,570,000 0.0%
BINARY_OP_ADD_INT 14,569,380 14,569,380 0.0%
LOAD_FAST_LOAD_FAST 565,080 565,080 0.0%
STORE_FAST_STORE_FAST 253,440 253,440 0.0%
FOR_ITER 252,740 252,740 0.0%
UNPACK_SEQUENCE_TWO_TUPLE 250,080 250,080 0.0%
STORE_SUBSCR_DICT 249,660 249,660 0.0%
CONTAINS_OP 249,460 249,460 0.0%
RESUME_CHECK 86,120 86,120 0.0%
RETURN_VALUE 72,780 72,780 0.0%
LOAD_GLOBAL_BUILTIN 72,000 72,000 0.0%
LOAD_CONST_IMMORTAL 49,020 49,020 0.0%
LOAD_ATTR 43,720 43,720 0.0%
LOAD_ATTR_MODULE 41,880 41,880 0.0%
CALL_ISINSTANCE 28,980 28,980 0.0%
COMPARE_OP_STR 25,260 25,260 0.0%
CALL_NON_PY_GENERAL 24,840 24,840 0.0%
POP_TOP 24,480 24,480 0.0%
LOAD_CONST_MORTAL 22,980 22,980 0.0%
NOP 20,340 20,340 0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS 19,920 19,920 0.0%
TO_BOOL_NONE 19,280 19,280 0.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 18,540 18,540 0.0%
LOAD_DEREF 18,180 18,180 0.0%
INTERPRETER_EXIT 17,340 17,340 0.0%
EXTENDED_ARG 15,960 15,960 0.0%
BINARY_OP_ADD_UNICODE 14,820 14,820 0.0%
LOAD_ATTR_INSTANCE_VALUE 14,520 14,520 0.0%
LOAD_METHOD 13,400 13,400 0.0%
GET_ITER 13,320 13,320 0.0%
STORE_ATTR 12,900 12,900 0.0%
POP_JUMP_IF_NOT_NONE 12,780 12,780 0.0%
LOAD_ATTR_SLOT 12,360 12,360 0.0%
STORE_ATTR_INSTANCE_VALUE 12,060 12,060 0.0%
CALL_BUILTIN_O 11,820 11,820 0.0%
TO_BOOL_STR 11,640 11,640 0.0%
BUILD_TUPLE 10,920 10,920 0.0%
TO_BOOL_INT 8,580 8,580 0.0%
POP_ITER 8,460 8,460 0.0%
YIELD_VALUE 8,460 8,460 0.0%
CALL_BUILTIN_FAST 8,280 8,280 0.0%
CALL_BUILTIN_CLASS 6,960 6,960 0.0%
SWAP 6,660 6,660 0.0%
COPY_FREE_VARS 6,480 6,480 0.0%
LIST_APPEND 6,420 6,420 0.0%
BINARY_SUBSCR_DICT 6,420 6,420 0.0%
BINARY_SUBSCR 6,060 6,060 0.0%
BUILD_LIST 6,000 6,000 0.0%
BUILD_MAP 5,580 5,580 0.0%
STORE_FAST_LOAD_FAST 5,580 5,580 0.0%
MAKE_FUNCTION 5,520 5,520 0.0%
TO_BOOL 5,420 5,420 0.0%
JUMP_FORWARD 5,340 5,340 0.0%
CALL_LEN 5,280 5,280 0.0%
BINARY_OP 4,740 4,740 0.0%
SET_FUNCTION_ATTRIBUTE 4,560 4,560 0.0%
CALL_FUNCTION_EX 4,260 4,260 0.0%
CONTAINS_OP_DICT 4,260 4,260 0.0%
RETURN_GENERATOR 3,900 3,900 0.0%
CHECK_EXC_MATCH 3,780 3,780 0.0%
POP_EXCEPT 3,780 3,780 0.0%
PUSH_EXC_INFO 3,780 3,780 0.0%
LOAD_METHOD_WITH_VALUES 3,700 3,700 0.0%
STORE_ATTR_SLOT 3,420 3,420 0.0%
CALL_PY_GENERAL 3,360 3,360 0.0%
CALL 3,240 3,240 0.0%
BINARY_SLICE 2,940 2,940 0.0%
CALL_KW_NON_PY 2,820 2,820 0.0%
COPY 2,520 2,520 0.0%
RESUME 2,460 2,460 0.0%
DICT_MERGE 2,280 2,280 0.0%
BINARY_SUBSCR_TUPLE_INT 2,280 2,280 0.0%
LOAD_SUPER_METHOD_METHOD 2,160 2,160 0.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 2,100 2,100 0.0%
TO_BOOL_LIST 2,040 2,040 0.0%
MAKE_CELL 1,980 1,980 0.0%
STORE_DEREF 1,860 1,860 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 1,860 1,860 0.0%
POP_JUMP_IF_NONE 1,680 1,680 0.0%
CALL_METHOD_DESCRIPTOR_O 1,440 1,440 0.0%
CALL_LIST_APPEND 1,380 1,380 0.0%
TO_BOOL_ALWAYS_TRUE 1,280 1,280 0.0%
FOR_ITER_TUPLE 1,260 1,260 0.0%
LOAD_ATTR_WITH_HINT 1,260 1,260 0.0%
UNPACK_SEQUENCE_TUPLE 1,140 1,140 0.0%
FORMAT_SIMPLE 1,020 1,020 0.0%
CALL_INTRINSIC_1 1,020 1,020 0.0%
LIST_EXTEND 1,020 1,020 0.0%
LOAD_FAST_AND_CLEAR 1,020 1,020 0.0%
CALL_KW_PY 1,020 1,020 0.0%
IMPORT_NAME 960 960 0.0%
MAP_ADD 960 960 0.0%
UNPACK_EX 900 900 0.0%
BINARY_SUBSCR_LIST_INT 900 900 0.0%
COMPARE_OP_FLOAT 900 900 0.0%
IS_OP 840 840 0.0%
BUILD_STRING 780 780 0.0%
EXIT_INIT_CHECK 600 600 0.0%
CALL_ALLOC_AND_ENTER_INIT 600 600 0.0%
CALL_TUPLE_1 600 600 0.0%
CALL_TYPE_1 540 540 0.0%
STORE_ATTR_WITH_HINT 480 480 0.0%
CONVERT_VALUE 420 420 0.0%
DELETE_ATTR 360 360 0.0%
LOAD_SPECIAL 360 360 0.0%
COMPARE_OP 340 340 0.0%
UNARY_NEGATIVE 300 300 0.0%
LOAD_CONST 300 300 0.0%
STORE_GLOBAL 240 240 0.0%
CONTAINS_OP_SET 240 240 0.0%
RAISE_VARARGS 180 180 0.0%
RERAISE 180 180 0.0%
BINARY_SUBSCR_GETITEM 180 180 0.0%
BINARY_SUBSCR_STR_INT 180 180 0.0%
LOAD_ATTR_PROPERTY 180 180 0.0%
BINARY_OP_INPLACE_ADD_UNICODE 120 120 0.0%
CALL_KW 120 120 0.0%
CALL_BOUND_METHOD_EXACT_ARGS 120 120 0.0%
LOAD_ATTR_CLASS 120 120 0.0%
INSTRUMENTED_JUMP_BACKWARD 120 120 0.0%
BUILD_SLICE 60 60 0.0%
BINARY_OP_SUBTRACT_FLOAT 60 60 0.0%
CALL_KW_BOUND_METHOD 60 60 0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 60 60 0.0%
UNPACK_SEQUENCE 40 40 0.0%
JUMP_BACKWARD_JIT 295,089
JUMP_BACKWARD_NO_JIT 60

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,380 0.0% 4,380 0.0% 0.0%
hit

Specialized instructions that complete.

43,731,720 100.0% 43,731,720 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 40 11.1% 40 11.1% 0.0%
Failure 320 88.9% 320 88.9% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
add other 80 25.0% 80 25.0% 0.0%
floor divide 80 25.0% 80 25.0% 0.0%
add different types 40 12.5% 40 12.5% 0.0%
multiply different types 40 12.5% 40 12.5% 0.0%
subtract other 40 12.5% 40 12.5% 0.0%
and other 20 6.2% 20 6.2% 0.0%
remainder 20 6.2% 20 6.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.

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

5,760 36.0% 5,760 36.0% 0.0%
hit

Specialized instructions that complete.

9,960 62.2% 9,960 62.2% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 20 6.7% 20 6.7% 0.0%
Failure 280 93.3% 280 93.3% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
list slice 140 50.0% 140 50.0% 0.0%
out of range 60 21.4% 60 21.4% 0.0%
buffer int 60 21.4% 60 21.4% 0.0%
string slice 20 7.1% 20 7.1% 0.0%

CALL

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

Specialized instructions that complete.

29,313,957 100.0% 29,313,969 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 3,240 100.0% 3,240 100.0% 0.0%
Failure 0 0.0% 0 0.0%

CALL_KW

specialization stats for CALL_KW family
Success Base Count Base Ratio Head Count Head Ratio Change
Success 120 100.0% 120 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.

240 0.0% 240 0.0% 0.0%
hit

Specialized instructions that complete.

29,166,300 100.0% 29,166,300 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 40 40.0% 40 40.0% 0.0%
Failure 60 60.0% 60 60.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
tuple 40 66.7% 40 66.7% 0.0%
different types 20 33.3% 20 33.3% 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.

249,180 98.1% 249,180 98.1% 0.0%
hit

Specialized instructions that complete.

4,500 1.8% 4,500 1.8% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 80 28.6% 80 28.6% 0.0%
Failure 200 71.4% 200 71.4% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
list 80 40.0% 80 40.0% 0.0%
other 60 30.0% 60 30.0% 0.0%
tuple 60 30.0% 60 30.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.

42,837 14.5% 42,849 14.5% 0.0%
deferred

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

252,240 85.3% 252,240 85.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 140 28.0% 140 28.0% 0.0%
Failure 360 72.0% 360 72.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
dict items 160 44.4% 160 44.4% 0.0%
set 80 22.2% 80 22.2% 0.0%
dict values 80 22.2% 80 22.2% 0.0%
dict keys 40 11.1% 40 11.1% 0.0%

LOAD_ATTR

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

Specialized instructions that complete.

145,357 76.6% 145,369 76.6% 0.0%
deferred

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

38,880 20.5% 38,880 20.5% 0.0%
miss

Specialized instructions that deopt.

600 0.3% 600 0.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 3,520 76.5% 3,520 76.5% 0.0%
Failure 1,080 23.5% 1,080 23.5% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
overriding descriptor 380 35.2% 380 35.2% 0.0%
method 300 27.8% 300 27.8% 0.0%
module attr not found 300 27.8% 300 27.8% 0.0%
non object slot 40 3.7% 40 3.7% 0.0%
not in dict 40 3.7% 40 3.7% 0.0%
class method obj 20 1.9% 20 1.9% 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,567,820 49.7% 14,567,820 49.7% 0.0%
deopt

Specialized instructions that deopt.

180 0.0% 180 0.0% 0.0%
hit

Specialized instructions that complete.

14,757,840 50.3% 14,757,840 50.3% 0.0%
miss

Specialized instructions that deopt.

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

11,240 80.6% 11,240 80.6% 0.0%
miss

Specialized instructions that deopt.

540 3.9% 540 3.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 1,240 57.4% 1,240 57.4% 0.0%
Failure 920 42.6% 920 42.6% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 900 97.8% 900 97.8% 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.

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

8,880 30.8% 8,880 30.8% 0.0%
hit

Specialized instructions that complete.

15,960 55.3% 15,960 55.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 2,640 65.7% 2,640 65.7% 0.0%
Failure 1,380 34.3% 1,380 34.3% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
not in dict 1,220 88.4% 1,220 88.4% 0.0%
no dict 80 5.8% 80 5.8% 0.0%
split dict 40 2.9% 40 2.9% 0.0%
not in keys 20 1.4% 20 1.4% 0.0%
class attr simple 20 1.4% 20 1.4% 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.

257,100 100.0% 257,100 100.0% 0.0%

TO_BOOL

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

Specialized instructions that complete.

105,257 93.2% 105,269 93.2% 0.0%
deferred

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

3,560 3.2% 3,560 3.2% 0.0%
miss

Specialized instructions that deopt.

2,300 2.0% 2,300 2.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 1,520 80.0% 1,520 80.0% 0.0%
Failure 380 20.0% 380 20.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 120 31.6% 120 31.6% 0.0%
tuple 120 31.6% 120 31.6% 0.0%
dict 60 15.8% 60 15.8% 0.0%
set 60 15.8% 60 15.8% 0.0%
sequence 20 5.3% 20 5.3% 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.

258,660 100.0% 258,660 100.0% 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%

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.

117,975,508 26.7% 118,270,705 26.8% 0.3%
Basic

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

308,720,445 69.9% 308,425,476 69.8% -0.1%
Not specialized

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

15,165,120 3.4% 15,165,120 3.4% 0.0%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

15,160 0.0% 15,160 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_GLOBAL 14,567,820 96.2% 14,567,820 96.2% 0.0%
FOR_ITER 252,240 1.7% 252,240 1.7% 0.0%
CONTAINS_OP 249,180 1.6% 249,180 1.6% 0.0%
LOAD_ATTR 38,880 0.3% 38,880 0.3% 0.0%
LOAD_METHOD 11,240 0.1% 11,240 0.1% 0.0%
STORE_ATTR 8,880 0.1% 8,880 0.1% 0.0%
BINARY_SUBSCR 5,760 0.0% 5,760 0.0% 0.0%
BINARY_OP 4,380 0.0% 4,380 0.0% 0.0%
TO_BOOL 3,560 0.0% 3,560 0.0% 0.0%
BINARY_SLICE 2,940 0.0% 2,940 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
RESUME 11,480 43.1% 11,480 43.1% 0.0%
RESUME_CHECK 11,480 43.1% 11,480 43.1% 0.0%
TO_BOOL_NONE 1,240 4.7% 1,240 4.7% 0.0%
TO_BOOL_ALWAYS_TRUE 1,060 4.0% 1,060 4.0% 0.0%
LOAD_ATTR_MODULE 600 2.3% 600 2.3% 0.0%
LOAD_METHOD_WITH_VALUES 540 2.0% 540 2.0% 0.0%
LOAD_GLOBAL_BUILTIN 180 0.7% 180 0.7% 0.0%
CALL_PY_GENERAL 60 0.2% 60 0.2% 0.0%
CACHE 0 0.0% 0 0.0%
BINARY_OP_INPLACE_ADD_UNICODE 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 17,400 0.1% 17,400 0.1% 0.0%
Calls to Python functions inlined 29,201,760 99.9% 29,201,760 99.9% 0.0%
Calls via PyEval_EvalFrame (total) 17,400 0.1% 17,400 0.1% 0.0%
Calls via PyEval_EvalFrame (vector) 5,040 0.0% 5,040 0.0% 0.0%
Calls via PyEval_EvalFrame (generator) 12,360 0.0% 12,360 0.0% 0.0%
Calls via PyEval_EvalFrame (legacy) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (function vectorcall) 5,040 0.0% 5,040 0.0% 0.0%
Calls via PyEval_EvalFrame (build class) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (slot) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (function ex) 300 0.0% 300 0.0% 0.0%
Calls via PyEval_EvalFrame (api) 960 0.0% 960 0.0% 0.0%
Calls via PyEval_EvalFrame (method) 0 0.0% 0 0.0%
Frame objects created 29,138,780 99.7% 29,138,780 99.7% 0.0%
Frames pushed 29,207,400 100.0% 29,207,400 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
Method cache misses 2,760 2,658 -3.7%
Method cache collisions 2,987 2,906 -2.7%
Method cache dunder misses 504 505 0.2%
Interpreter mortal increfs 45,161,008 6.8% 45,158,896 6.8% -0.0%
Interpreter immortal increfs 74,231,580 11.2% 74,233,740 11.2% 0.0%
Method cache dunder hits 41,716 41,715 -0.0%
Frees 58,547,257 58,546,031 -0.0%
Mortal decrefs 205,484,216 26.8% 205,479,989 26.8% -0.0%
Allocations to 512 bytes 58,527,520 99.2% 58,526,320 99.2% -0.0%
Allocations 58,532,800 99.2% 58,531,600 99.2% -0.0%
Interpreter mortal decrefs 89,257,408 11.6% 89,256,016 11.6% -0.0%
Interpreter immortal decrefs 175,795,000 22.9% 175,796,440 22.9% 0.0%
Mortal increfs 307,172,192 46.2% 307,169,904 46.2% -0.0%
Immortal decrefs 296,857,186 38.7% 296,859,169 38.7% 0.0%
Method cache hits 29,211,120 29,211,222 0.0%
Immortal increfs 238,003,236 35.8% 238,002,765 35.8% -0.0%
Allocations from freelist 492,080 0.8% 492,080 0.8% 0.0%
Frees to freelist 489,360 489,360 0.0%
Allocations to 4 kbytes 2,460 0.0% 2,460 0.0% 0.0%
Allocations over 4 kbytes 2,820 0.0% 2,820 0.0% 0.0%
Inline values 1,800 1,800 0.0%
Materialize dict (on request) 180 10.0% 180 10.0% 0.0%
Materialize dict (new key) 180 10.0% 180 10.0% 0.0%
Materialize dict (too big) 120 6.7% 120 6.7% 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 0 0 0 0 0 0 0 0 0 0
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.

60 60 0.0%
Traces created

The number of traces that were successfully created.

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

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.

0 0.0% 0 0.0%
Executors invalidated

The number of executors that were invalidated due to watched dictionary changes.

60 100.0% 60 100.0% 0.0%
Traces executed

The number of traces that were executed

60 60 0.0%
Uops executed

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

171,540 285,900.0% 171,540 285,900.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.

60 60 0.0%
Optimizer successes

The number of traces that were successfully optimized.

60 100.0% 60 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 0 0.0% 0 0.0%
<= 16 0 0.0% 0 0.0%
<= 32 60 100.0% 60 100.0% 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 0 0.0% 0 0.0%
<= 16 0 0.0% 0 0.0%
<= 32 60 100.0% 60 100.0% 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 29,820 29,820 0.0%
_CHECK_VALIDITY 22,320 22,320 0.0%
_LOAD_FAST_3 14,880 14,880 0.0%
_FOR_ITER_TIER_TWO 7,500 7,500 0.0%
_CHECK_PERIODIC 7,500 7,500 0.0%
_CHECK_VALIDITY_AND_SET_IP 7,500 7,500 0.0%
_MAKE_WARM 7,500 7,500 0.0%
_STORE_SUBSCR_DICT 7,440 7,440 0.0%
_UNPACK_SEQUENCE_TWO_TUPLE 7,440 7,440 0.0%
_CONTAINS_OP 7,440 7,440 0.0%
_GUARD_IS_FALSE_POP 7,440 7,440 0.0%
_JUMP_TO_TOP 7,440 7,440 0.0%
_LOAD_FAST_0 7,440 7,440 0.0%
_LOAD_FAST_2 7,440 7,440 0.0%
_LOAD_FAST_4 7,440 7,440 0.0%
_STORE_FAST_3 7,440 7,440 0.0%
_STORE_FAST_4 7,440 7,440 0.0%
_EXIT_TRACE 60 60 0.0%
_START_EXECUTOR 60 60 0.0%

Pair counts

Pair counts for top 100 Non-JIT uop pairs

Pairs of specialized operations that deoptimize and are then followed by the corresponding unspecialized instruction are not counted as pairs.

Not included in comparative output.

Unsupported opcodes

unsupported opcodes

Optimizer errored out with opcode

Optimization stopped after encountering this opcode

Rare events

Counts of rare/unlikely events
Event Base Count Head Count Change
set class

Setting an object's class, obj.__class__ = ...

0 0
set bases

Setting the bases of a class, cls.__bases__ = ...

0 0
set eval frame func

Setting the PEP 523 frame eval function _PyInterpreterState_SetFrameEvalFunc()

0 0
builtin dict

Modifying the builtins, __builtins__.__dict__[var] = ...

0 0
func modification

Modifying a function, e.g. func.__defaults__ = ..., etc.

0 0
watched dict modification

A watched dict has been modified

0 0
watched globals modification

A watched globals() dict has been modified

0 0

Meta stats

Meta statistics
Base Count Head Count Change
Number of data files 20 20 0.0%

Stats gathered on: 2025-01-22