Skip to content

Latest commit

 

History

History
3791 lines (3571 loc) · 77.5 KB

bm-20250416-azure-x86_64-faster%2dcpython-get_iter_stats-3.14.0a7+-10cd875-pystats-asyncio_websockets-vs-base.md

File metadata and controls

3791 lines (3571 loc) · 77.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
DELETE_ATTR 129 120 -7.0%
BINARY_OP_MULTIPLY_FLOAT 179 180 0.6%
CALL_STR_1 421 420 -0.2%
TO_BOOL_STR 1,743 1,740 -0.2%
EXTENDED_ARG 1,542 1,540 -0.1%
POP_EXCEPT 1,962 1,960 -0.1%
STORE_SUBSCR 2,122 2,120 -0.1%
LOAD_SPECIAL 17,734 17,720 -0.1%
SET_FUNCTION_ATTRIBUTE 2,822 2,820 -0.1%
CALL_LEN 149,978 149,888 -0.1%
SWAP 26,015 26,000 -0.1%
MAKE_FUNCTION 3,722 3,720 -0.1%
CALL_KW_NON_PY 3,842 3,840 -0.1%
COMPARE_OP_INT 187,720 187,628 -0.0%
LOAD_ATTR_INSTANCE_VALUE 720,335 720,096 -0.0%
STORE_DEREF 16,625 16,620 -0.0%
CALL_NON_PY_GENERAL 172,546 172,500 -0.0%
JUMP_BACKWARD_NO_INTERRUPT 7,782 7,780 -0.0%
COPY 28,007 28,000 -0.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 20,205 20,200 -0.0%
DELETE_SUBSCR 25,346 25,340 -0.0%
LOAD_ATTR_PROPERTY 8,642 8,640 -0.0%
STORE_ATTR_INSTANCE_VALUE 111,564 111,540 -0.0%
MAKE_CELL 23,765 23,760 -0.0%
NOP 108,162 108,140 -0.0%
CALL 9,842 9,840 -0.0%
CALL_METHOD_DESCRIPTOR_O 45,229 45,220 -0.0%
LOAD_GLOBAL_BUILTIN 563,382 563,288 -0.0%
POP_JUMP_IF_NONE 133,002 132,980 -0.0%
BINARY_OP_SUBSCR_LIST_INT 6,239 6,240 0.0%
POP_TOP 431,886 431,820 -0.0%
LOAD_ATTR_METHOD_NO_DICT 192,669 192,640 -0.0%
INTERPRETER_EXIT 103,795 103,780 -0.0%
CALL_BUILTIN_O 8,099 8,100 0.0%
TO_BOOL_LIST 8,519 8,520 0.0%
LOAD_FAST 218,525 218,500 -0.0%
BINARY_OP_SUBSCR_DICT 9,181 9,180 -0.0%
LOAD_CONST_IMMORTAL 755,239 755,160 -0.0%
LOAD_FAST_BORROW 3,475,463 3,475,116 -0.0%
CALL_PY_GENERAL 20,762 20,760 -0.0%
POP_JUMP_IF_NOT_NONE 94,389 94,380 -0.0%
POP_JUMP_IF_FALSE 1,094,212 1,094,108 -0.0%
EXIT_INIT_CHECK 32,823 32,820 -0.0%
CALL_ALLOC_AND_ENTER_INIT 32,943 32,940 -0.0%
RETURN_VALUE 679,401 679,340 -0.0%
JUMP_FORWARD 82,327 82,320 -0.0%
CALL_PY_EXACT_ARGS 372,109 372,080 -0.0%
RESUME_CHECK 656,790 656,740 -0.0%
LOAD_DEREF 66,845 66,840 -0.0%
COPY_FREE_VARS 13,441 13,440 -0.0%
TO_BOOL 47,663 47,660 -0.0%
PUSH_NULL 256,696 256,680 -0.0%
LOAD_GLOBAL_MODULE 812,550 812,500 -0.0%
CALL_LIST_APPEND 17,459 17,460 0.0%
LOAD_ATTR_METHOD_WITH_VALUES 342,639 342,620 -0.0%
BUILD_TUPLE 74,584 74,580 -0.0%
COMPARE_OP 41,478 41,480 0.0%
BINARY_OP 84,144 84,140 -0.0%
STORE_FAST 721,092 721,060 -0.0%
TO_BOOL_NONE 49,442 49,440 -0.0%
BUILD_SLICE 25,199 25,200 0.0%
CALL_FUNCTION_EX 76,863 76,860 -0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 108,124 108,120 -0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS 27,181 27,180 -0.0%
POP_JUMP_IF_TRUE 437,756 437,740 -0.0%
TO_BOOL_BOOL 639,482 639,460 -0.0%
BUILD_MAP 59,462 59,460 -0.0%
LOAD_ATTR 290,689 290,680 -0.0%
FOR_ITER_LIST 33,599 33,600 0.0%
LOAD_CONST_MORTAL 105,903 105,900 -0.0%
STORE_SUBSCR_DICT 127,203 127,200 -0.0%
LOAD_ATTR_MODULE 219,485 219,480 -0.0%
TO_BOOL_INT 46,321 46,320 -0.0%
LOAD_SMALL_INT 250,445 250,440 -0.0%
BINARY_SLICE 51,419 51,420 0.0%
DICT_MERGE 57,241 57,240 -0.0%
LOAD_FAST_BORROW_LOAD_FAST_BORROW 765,673 765,660 -0.0%
CALL_BUILTIN_FAST 212,763 212,760 -0.0%
STORE_ATTR 161,521 161,520 -0.0%
JUMP_BACKWARD_NO_JIT 219,181 219,180 -0.0%
LOAD_ATTR_SLOT 974,460 974,460 0.0%
IS_OP 327,060 327,060 0.0%
FOR_ITER 186,480 186,480 0.0%
CONTAINS_OP_DICT 151,320 151,320 0.0%
STORE_ATTR_SLOT 136,040 136,040 0.0%
RETURN_GENERATOR 125,640 125,640 0.0%
SEND_GEN 122,820 122,820 0.0%
GET_AWAITABLE 119,520 119,520 0.0%
END_SEND 119,280 119,280 0.0%
LOAD_ATTR_WITH_HINT 78,120 78,120 0.0%
BINARY_OP_EXTEND 75,360 75,360 0.0%
CALL_KW_PY 56,520 56,520 0.0%
GET_ITER 53,160 53,160 0.0%
POP_ITER 52,860 52,860 0.0%
CALL_TYPE_1 44,520 44,520 0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 34,200 34,200 0.0%
CALL_ISINSTANCE 33,780 33,780 0.0%
LOAD_FAST_LOAD_FAST 33,600 33,600 0.0%
FOR_ITER_RANGE 33,540 33,540 0.0%
CALL_BOUND_METHOD_EXACT_ARGS 31,260 31,260 0.0%
BUILD_LIST 29,040 29,040 0.0%
CONTAINS_OP 27,920 27,920 0.0%
LOAD_ATTR_METHOD_LAZY_DICT 24,420 24,420 0.0%
STORE_FAST_STORE_FAST 21,540 21,540 0.0%
CALL_INTRINSIC_1 18,840 18,840 0.0%
LIST_EXTEND 18,420 18,420 0.0%
UNPACK_SEQUENCE_TWO_TUPLE 18,420 18,420 0.0%
CALL_METHOD_DESCRIPTOR_FAST 16,200 16,200 0.0%
BINARY_OP_ADD_INT 14,820 14,820 0.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 13,680 13,680 0.0%
CALL_BUILTIN_CLASS 12,300 12,300 0.0%
LOAD_FAST_CHECK 12,120 12,120 0.0%
YIELD_VALUE 9,480 9,480 0.0%
UNPACK_SEQUENCE_TUPLE 7,860 7,860 0.0%
CONTAINS_OP_SET 7,800 7,800 0.0%
FOR_ITER_TUPLE 7,320 7,320 0.0%
DELETE_FAST 6,960 6,960 0.0%
LIST_APPEND 6,840 6,840 0.0%
UNARY_NOT 6,720 6,720 0.0%
LOAD_GLOBAL 6,280 6,280 0.0%
CALL_KW_BOUND_METHOD 6,240 6,240 0.0%
SEND 4,740 4,740 0.0%
COMPARE_OP_FLOAT 4,140 4,140 0.0%
LOAD_SUPER_ATTR_METHOD 4,020 4,020 0.0%
COMPARE_OP_STR 3,420 3,420 0.0%
BINARY_OP_ADD_FLOAT 2,820 2,820 0.0%
BINARY_OP_SUBTRACT_INT 2,580 2,580 0.0%
MAP_ADD 2,340 2,340 0.0%
STORE_ATTR_WITH_HINT 2,220 2,220 0.0%
FORMAT_SIMPLE 2,160 2,160 0.0%
CHECK_EXC_MATCH 2,040 2,040 0.0%
PUSH_EXC_INFO 1,980 1,980 0.0%
FOR_ITER_GEN 1,620 1,620 0.0%
TO_BOOL_ALWAYS_TRUE 1,620 1,620 0.0%
LOAD_ATTR_CLASS 1,440 1,440 0.0%
BUILD_STRING 1,140 1,140 0.0%
LOAD_SUPER_ATTR_ATTR 1,080 1,080 0.0%
BINARY_OP_SUBSCR_STR_INT 1,020 1,020 0.0%
LOAD_COMMON_CONSTANT 960 960 0.0%
UNPACK_SEQUENCE_LIST 900 900 0.0%
END_FOR 840 840 0.0%
UNARY_INVERT 840 840 0.0%
LOAD_FAST_AND_CLEAR 840 840 0.0%
RERAISE 660 660 0.0%
BINARY_OP_SUBSCR_GETITEM 600 600 0.0%
UNPACK_SEQUENCE 560 560 0.0%
CALL_KW 520 520 0.0%
BINARY_OP_ADD_UNICODE 480 480 0.0%
BUILD_SET 420 420 0.0%
STORE_FAST_LOAD_FAST 420 420 0.0%
BINARY_OP_SUBSCR_TUPLE_INT 420 420 0.0%
RAISE_VARARGS 360 360 0.0%
BINARY_OP_SUBTRACT_FLOAT 360 360 0.0%
BINARY_OP_MULTIPLY_INT 300 300 0.0%
CLEANUP_THROW 240 240 0.0%
UNARY_NEGATIVE 240 240 0.0%
LOAD_SUPER_ATTR 180 180 0.0%
BINARY_OP_INPLACE_ADD_UNICODE 120 120 0.0%
CALL_TUPLE_1 120 120 0.0%
CONVERT_VALUE 60 60 0.0%
IMPORT_NAME 60 60 0.0%
STORE_GLOBAL 60 60 0.0%
CALL_BOUND_METHOD_GENERAL 60 60 0.0%
LOAD_CONST 4

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.

82,502 40.3% 82,500 40.3% -0.0%
hit

Specialized instructions that complete.

120,718 58.9% 120,720 58.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 1,062 64.7% 1,060 64.6% -0.2%
Success 580 35.3% 580 35.4% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
subscr deque 21 2.0% 20 1.9% -4.8%
remainder 161 15.2% 160 15.1% -0.6%
add other 220 20.7% 220 20.8% 0.0%
subscr structtime 140 13.2% 140 13.2% 0.0%
subscr tuple slice 120 11.3% 120 11.3% 0.0%
floor divide 100 9.4% 100 9.4% 0.0%
out of range 40 3.8% 40 3.8% 0.0%
code complex parameters 40 3.8% 40 3.8% 0.0%
multiply different types 40 3.8% 40 3.8% 0.0%
or different types 40 3.8% 40 3.8% 0.0%
xor int 40 3.8% 40 3.8% 0.0%
subscr bytes 40 3.8% 40 3.8% 0.0%
and int 20 1.9% 20 1.9% 0.0%
or int 20 1.9% 20 1.9% 0.0%
subscr string slice 20 1.9% 20 1.9% 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.

51,419 100.0% 51,420 100.0% 0.0%

CALL

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

Specialized instructions that complete.

1,130,111 96.3% 1,129,968 96.3% -0.0%
deferred

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

33,362 2.8% 33,360 2.8% -0.0%
miss

Specialized instructions that deopt.

33,840 2.9% 33,840 2.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 10,300 99.8% 10,300 99.8% 0.0%
Failure 20 0.2% 20 0.2% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
init not simple 40 200.0% 40 200.0% 0.0%
out of versions 20 100.0% 20 100.0% 0.0%
init not python 20 100.0% 20 100.0% 0.0%

CALL_KW

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

Specialized instructions that deopt.

239 0.1% 240 0.1% 0.4%
hit

Specialized instructions that complete.

195,041 82.4% 194,948 82.4% -0.0%
deferred

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

39,839 16.8% 39,840 16.8% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 819 50.0% 820 50.0% 0.1%
Success 820 50.0% 820 50.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
float long 99 12.1% 100 12.2% 1.0%
other 400 48.8% 400 48.8% 0.0%
different types 120 14.7% 120 14.6% 0.0%
bytes 100 12.2% 100 12.2% 0.0%
bool 60 7.3% 60 7.3% 0.0%
big int 40 4.9% 40 4.9% 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.

27,300 14.6% 27,300 14.6% 0.0%
hit

Specialized instructions that complete.

159,120 85.1% 159,120 85.1% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 40 6.5% 40 6.5% 0.0%
Failure 580 93.5% 580 93.5% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
tuple 380 65.5% 380 65.5% 0.0%
str 140 24.1% 140 24.1% 0.0%
list 60 10.3% 60 10.3% 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.

76,079 29.0% 76,080 29.0% 0.0%
deferred

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

185,580 70.7% 185,580 70.7% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 360 40.0% 360 40.0% 0.0%
Failure 540 60.0% 540 60.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
set 140 25.9% 140 25.9% 0.0%
dict items 80 14.8% 80 14.8% 0.0%
ascii string 80 14.8% 80 14.8% 0.0%
dict values 60 11.1% 60 11.1% 0.0%
enumerate 60 11.1% 60 11.1% 0.0%
bytes 40 7.4% 40 7.4% 0.0%
reversed list 40 7.4% 40 7.4% 0.0%
other 20 3.7% 20 3.7% 0.0%
itertools 20 3.7% 20 3.7% 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.

2,504,452 86.3% 2,504,167 86.3% -0.0%
miss

Specialized instructions that deopt.

105,638 3.6% 105,629 3.6% -0.0%
deferred

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

273,547 9.4% 273,540 9.4% -0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 4,082 24.1% 4,080 24.1% -0.0%
Success 12,840 75.9% 12,840 75.9% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
method 922 22.6% 920 22.5% -0.2%
overriding descriptor 1,220 29.9% 1,220 29.9% 0.0%
mutable class 700 17.1% 700 17.2% 0.0%
module attr not found 620 15.2% 620 15.2% 0.0%
non object slot 160 3.9% 160 3.9% 0.0%
builtin class method 140 3.4% 140 3.4% 0.0%
class method obj 140 3.4% 140 3.4% 0.0%
metaclass attribute 20 0.5% 20 0.5% 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.

1,374,792 99.5% 1,374,648 99.5% -0.0%
deopt

Specialized instructions that deopt.

120 0.0% 120 0.0% 0.0%
miss

Specialized instructions that deopt.

1,140 0.1% 1,140 0.1% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 6,280 100.0% 6,280 100.0% 0.0%
Failure 0 0.0% 0 0.0%

LOAD_SUPER_ATTR

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

Specialized instructions that complete.

5,100 96.6% 5,100 96.6% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 180 100.0% 180 100.0% 0.0%
Failure 0 0.0% 0 0.0%

SEND

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

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

4,020 3.2% 4,020 3.2% 0.0%
hit

Specialized instructions that complete.

122,820 96.3% 122,820 96.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 240 33.3% 240 33.3% 0.0%
Failure 480 66.7% 480 66.7% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 480 100.0% 480 100.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.

238,624 58.0% 238,600 58.0% -0.0%
deferred

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

157,321 38.2% 157,320 38.2% -0.0%
miss

Specialized instructions that deopt.

11,200 2.7% 11,200 2.7% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 2,900 66.8% 2,900 66.8% 0.0%
Failure 1,440 33.2% 1,440 33.2% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
not in dict 940 65.3% 940 65.3% 0.0%
class attr simple 260 18.1% 260 18.1% 0.0%
overriding descriptor 80 5.6% 80 5.6% 0.0%
method 60 4.2% 60 4.2% 0.0%
not managed dict 60 4.2% 60 4.2% 0.0%
not in keys 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
deferred

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

1,741 1.3% 1,740 1.3% -0.1%
hit

Specialized instructions that complete.

127,203 98.4% 127,200 98.4% -0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 301 79.0% 300 78.9% -0.3%
Success 80 21.0% 80 21.1% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
py simple 301 100.0% 300 100.0% -0.3%

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.

44,402 5.6% 44,400 5.6% -0.0%
hit

Specialized instructions that complete.

745,447 94.0% 745,420 94.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
Failure 561 17.2% 560 17.2% -0.2%
Success 2,700 82.8% 2,700 82.8% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
sequence 161 28.7% 160 28.6% -0.6%
bytes 160 28.5% 160 28.6% 0.0%
dict 80 14.3% 80 14.3% 0.0%
memory view 40 7.1% 40 7.1% 0.0%
set 40 7.1% 40 7.1% 0.0%
tuple 40 7.1% 40 7.1% 0.0%
float 20 3.6% 20 3.6% 0.0%
mapping 20 3.6% 20 3.6% 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.

27,180 98.0% 27,180 98.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 560 100.0% 560 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
Not specialized

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

915,558 4.5% 968,700 4.8% 5.8%
Basic

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

10,391,477 51.3% 10,337,464 51.1% -0.5%
Specialized hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

8,787,891 43.4% 8,786,991 43.4% -0.0%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

152,117 0.8% 152,109 0.8% -0.0%

Deferred by instruction

Breakdown of deferred (not specialized) instruction counts by family
Name Base Count Base Ratio Head Count Head Ratio Change
CALL 33,362 3.7% 33,360 3.7% -0.0%
TO_BOOL 44,402 4.9% 44,400 4.9% -0.0%
LOAD_ATTR 273,547 30.4% 273,540 30.4% -0.0%
COMPARE_OP 39,839 4.4% 39,840 4.4% 0.0%
BINARY_OP 82,502 9.2% 82,500 9.2% -0.0%
BINARY_SLICE 51,419 5.7% 51,420 5.7% 0.0%
STORE_ATTR 157,321 17.5% 157,320 17.5% -0.0%
FOR_ITER 185,580 20.6% 185,580 20.6% 0.0%
CONTAINS_OP 27,300 3.0% 27,300 3.0% 0.0%
SEND 4,020 0.4% 4,020 0.4% 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_METHOD_WITH_VALUES 72,309 47.5% 72,309 47.5% 0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS 24,840 16.3% 24,840 16.3% 0.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 12,600 8.3% 12,600 8.3% 0.0%
STORE_ATTR_SLOT 10,420 6.8% 10,420 6.9% 0.0%
LOAD_ATTR_WITH_HINT 7,800 5.1% 7,800 5.1% 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 7,680 5.0% 7,680 5.0% 0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 6,360 4.2% 6,360 4.2% 0.0%
LOAD_ATTR_SLOT 5,000 3.3% 5,000 3.3% 0.0%
LOAD_ATTR_METHOD_NO_DICT 900 0.6% 900 0.6% 0.0%
LOAD_GLOBAL_BUILTIN 840 0.6% 840 0.6% 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 via PyEval_EvalFrame (api) 387 0.0% 380 0.0% -1.8%
Frame objects created 2,541 0.3% 2,540 0.3% -0.0%
Calls via PyEval_EvalFrame (slot) 3,781 0.5% 3,780 0.5% -0.0%
Calls via PyEval_EvalFrame (vector) 93,571 12.0% 93,560 12.0% -0.0%
Calls via PyEval_EvalFrame (function vectorcall) 93,571 12.0% 93,560 12.0% -0.0%
Calls to PyEval_EvalDefault 104,131 13.3% 104,120 13.3% -0.0%
Calls via PyEval_EvalFrame (total) 104,131 13.3% 104,120 13.3% -0.0%
Frames pushed 680,613 87.0% 680,560 87.0% -0.0%
Calls to Python functions inlined 678,539 86.7% 678,500 86.7% -0.0%
Calls via PyEval_EvalFrame (function ex) 24,961 3.2% 24,960 3.2% -0.0%
Calls via PyEval_EvalFrame (generator) 10,560 1.3% 10,560 1.3% 0.0%
Calls via PyEval_EvalFrame (legacy) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (build class) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (method) 25,080 3.2% 25,080 3.2% 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 2,273 2,004 -11.8%
Method cache collisions 10,622 9,940 -6.4%
Method cache misses 8,453 8,048 -4.8%
Method cache dunder hits 218,408 218,656 0.1%
Immortal increfs 2,887,014 26.3% 2,885,549 26.3% -0.1%
Method cache hits 767,165 767,541 0.0%
Mortal decrefs 2,613,715 22.0% 2,612,844 22.0% -0.0%
Immortal decrefs 2,789,496 23.5% 2,788,604 23.5% -0.0%
Mortal increfs 2,603,289 23.7% 2,602,563 23.7% -0.0%
Frees to freelist 872,603 872,468 -0.0%
Allocations from freelist 874,737 52.4% 874,623 52.4% -0.0%
Frees 784,891 784,796 -0.0%
Interpreter mortal decrefs 6,137,415 51.7% 6,136,712 51.7% -0.0%
Interpreter mortal increfs 4,751,069 43.2% 4,750,535 43.2% -0.0%
Inline values 48,424 48,420 -0.0%
Allocations to 512 bytes 655,263 39.2% 655,225 39.2% -0.0%
Allocations 795,794 47.6% 795,753 47.6% -0.0%
Allocations to 4 kbytes 97,539 5.8% 97,534 5.8% -0.0%
Allocations over 4 kbytes 42,992 2.6% 42,994 2.6% 0.0%
Interpreter immortal increfs 753,083 6.8% 753,060 6.9% -0.0%
Interpreter immortal decrefs 326,581 2.8% 326,580 2.8% -0.0%
Materialize dict (on request) 0 0.0% 0 0.0%
Materialize dict (new key) 120 0.2% 120 0.2% 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 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

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-04-16