Skip to content

Latest commit

 

History

History
4775 lines (4525 loc) · 101 KB

bm-20241025-azure-x86_64-faster%2dcpython-split_load_const-3.14.0a1+-f934559-pystats-vs-base.md

File metadata and controls

4775 lines (4525 loc) · 101 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
LOAD_CONST 13,759,243,594 1,715,561,348 -87.5%
RETURN_VALUE 3,576,885,953 5,164,640,614 44.4%
UNARY_INVERT 10,379,832 10,909,301 5.1%
LOAD_FAST_CHECK 3,947,605 4,124,077 4.5%
LOAD_SPECIAL 13,543,410 14,014,186 3.5%
EXTENDED_ARG 361,620,862 372,932,982 3.1%
IMPORT_NAME 8,517,063 8,635,748 1.4%
IMPORT_FROM 8,787,602 8,906,557 1.4%
LOAD_SUPER_ATTR_METHOD 59,356,073 60,003,096 1.1%
CALL_BOUND_METHOD_GENERAL 7,631,142 7,690,113 0.8%
CALL_KW_BOUND_METHOD 1,722,276 1,710,274 -0.7%
TO_BOOL_INT 255,222,744 256,954,926 0.7%
LOAD_ATTR_PROPERTY 70,995,890 71,233,982 0.3%
TO_BOOL_LIST 84,864,189 85,148,670 0.3%
LOAD_ATTR 747,265,755 749,278,275 0.3%
LOAD_NAME 9,741,324 9,716,320 -0.3%
CALL_PY_GENERAL 316,364,700 317,161,180 0.3%
CALL_BUILTIN_CLASS 148,350,000 148,703,914 0.2%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 223,415,834 223,945,060 0.2%
BINARY_OP 1,058,265,284 1,060,588,922 0.2%
LOAD_FAST_AND_CLEAR 69,215,745 69,365,113 0.2%
RESUME 18,504 18,543 0.2%
BUILD_MAP 108,143,896 108,349,624 0.2%
POP_JUMP_IF_NOT_NONE 523,575,659 524,565,834 0.2%
COPY_FREE_VARS 343,549,322 344,181,461 0.2%
LOAD_ATTR_MODULE 495,922,034 496,794,910 0.2%
STORE_SUBSCR_DICT 230,786,541 231,187,120 0.2%
CALL_NON_PY_GENERAL 982,234,835 983,939,113 0.2%
CALL_METHOD_DESCRIPTOR_FAST 355,029,494 355,583,290 0.2%
JUMP_FORWARD 381,111,614 381,671,865 0.1%
LIST_EXTEND 90,172,241 90,290,267 0.1%
STORE_ATTR_INSTANCE_VALUE 966,743,769 967,920,771 0.1%
LOAD_GLOBAL_MODULE 3,239,271,489 3,243,053,001 0.1%
CALL_PY_EXACT_ARGS 3,127,431,687 3,130,695,508 0.1%
UNARY_NOT 57,706,209 57,765,313 0.1%
IS_OP 517,170,187 516,648,049 -0.1%
FOR_ITER_GEN 241,506,534 241,266,522 -0.1%
CONTAINS_OP 151,538,838 151,388,968 -0.1%
CONTAINS_OP_DICT 404,204,393 404,603,642 0.1%
LOAD_ATTR_METHOD_WITH_VALUES 2,455,560,593 2,457,708,597 0.1%
BUILD_LIST 657,803,597 658,365,332 0.1%
POP_TOP 3,095,985,060 3,098,590,742 0.1%
RESUME_CHECK 6,174,315,043 6,179,312,029 0.1%
LOAD_ATTR_INSTANCE_VALUE 4,812,440,426 4,815,993,958 0.1%
CALL_METHOD_DESCRIPTOR_NOARGS 333,151,520 333,386,957 0.1%
NOP 2,471,830,884 2,473,522,751 0.1%
CALL_KW_PY 93,861,647 93,921,176 0.1%
SWAP 1,927,089,580 1,928,292,865 0.1%
FOR_ITER_LIST 2,048,982,508 2,050,184,125 0.1%
COPY 2,068,228,239 2,069,405,741 0.1%
GET_ITER 1,050,068,205 1,050,630,809 0.1%
BINARY_OP_SUBTRACT_FLOAT 352,604,324 352,780,691 0.1%
LOAD_FAST 36,535,081,627 36,553,224,142 0.0%
LIST_APPEND 225,078,454 225,188,209 0.0%
INTERPRETER_EXIT 1,758,796,216 1,759,647,689 0.0%
CALL_ISINSTANCE 838,152,788 838,523,894 0.0%
BINARY_SUBSCR_TUPLE_INT 292,754,414 292,628,667 -0.0%
LOAD_ATTR_METHOD_NO_DICT 2,430,617,081 2,431,515,573 0.0%
YIELD_VALUE 1,079,001,878 1,078,620,954 -0.0%
LOAD_DEREF 1,315,682,932 1,316,138,649 0.0%
UNPACK_SEQUENCE_TUPLE 398,663,493 398,526,919 -0.0%
LOAD_GLOBAL_BUILTIN 5,661,078,149 5,662,932,325 0.0%
STORE_FAST 12,901,325,456 12,905,492,882 0.0%
BINARY_OP_ADD_FLOAT 510,536,244 510,692,695 0.0%
STORE_FAST_STORE_FAST 735,444,947 735,226,003 -0.0%
POP_JUMP_IF_TRUE 1,670,220,240 1,670,716,354 0.0%
FOR_ITER 1,088,469,700 1,088,146,567 -0.0%
PUSH_NULL 1,330,590,502 1,330,982,982 0.0%
POP_JUMP_IF_FALSE 10,663,826,201 10,666,905,045 0.0%
FOR_ITER_RANGE 625,423,768 625,601,292 0.0%
TO_BOOL_BOOL 3,834,397,109 3,835,445,896 0.0%
COMPARE_OP_INT 2,602,812,341 2,603,503,367 0.0%
BUILD_TUPLE 1,139,963,772 1,140,262,286 0.0%
LOAD_FAST_LOAD_FAST 9,955,123,100 9,957,666,125 0.0%
POP_JUMP_IF_NONE 271,189,622 271,247,294 0.0%
CALL_FUNCTION_EX 153,318,409 153,290,750 -0.0%
FOR_ITER_TUPLE 532,792,986 532,699,830 -0.0%
BUILD_SET 783,780 783,899 0.0%
CALL_TYPE_1 368,925,161 368,875,262 -0.0%
CALL_BOUND_METHOD_EXACT_ARGS 172,952,798 172,929,661 -0.0%
UNPACK_SEQUENCE_TWO_TUPLE 729,737,682 729,644,005 -0.0%
CALL_BUILTIN_FAST 1,042,000,428 1,042,117,052 0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS 95,344,578 95,334,021 -0.0%
BINARY_SUBSCR 2,355,124,027 2,354,863,573 -0.0%
COMPARE_OP 517,333,084 517,384,581 0.0%
LOAD_ATTR_WITH_HINT 82,411,631 82,404,530 -0.0%
CALL 347,424 347,395 -0.0%
TO_BOOL_STR 76,955,827 76,949,426 -0.0%
UNPACK_SEQUENCE 1,829,015 1,829,111 0.0%
SET_FUNCTION_ATTRIBUTE 96,230,956 96,226,047 -0.0%
CALL_LIST_APPEND 1,237,928,182 1,237,987,604 0.0%
BINARY_SUBSCR_LIST_INT 2,515,572,546 2,515,686,075 0.0%
DELETE_FAST 1,359,881 1,359,941 0.0%
JUMP_BACKWARD 5,264,356,240 5,264,568,507 0.0%
MAKE_FUNCTION 115,512,300 115,507,654 -0.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 152,620,476 152,614,504 -0.0%
COMPARE_OP_STR 1,579,249,505 1,579,309,072 0.0%
CALL_LEN 1,346,906,846 1,346,954,458 0.0%
CALL_BUILTIN_O 909,207,036 909,177,036 -0.0%
LOAD_ATTR_CLASS 376,602,097 376,590,084 -0.0%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT 76,998,602 76,996,531 -0.0%
CHECK_EXC_MATCH 16,649,880 16,650,237 0.0%
POP_EXCEPT 16,986,654 16,986,985 0.0%
PUSH_EXC_INFO 16,986,679 16,987,007 0.0%
LOAD_SUPER_ATTR_ATTR 3,071,294 3,071,351 0.0%
DICT_MERGE 36,113,244 36,112,623 -0.0%
BINARY_SUBSCR_DICT 595,136,028 595,125,978 -0.0%
MAP_ADD 33,810,041 33,810,574 0.0%
CONTAINS_OP_SET 1,498,834,694 1,498,812,565 -0.0%
RETURN_GENERATOR 417,023,847 417,018,146 -0.0%
MAKE_CELL 66,839,411 66,840,269 0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 23,736,766 23,737,006 0.0%
END_FOR 101,019,640 101,018,637 -0.0%
LOAD_ATTR_SLOT 1,635,771,689 1,635,755,502 -0.0%
RAISE_VARARGS 4,409,744 4,409,784 0.0%
CALL_KW 116,859 116,860 0.0%
TO_BOOL 264,048,356 264,046,269 -0.0%
CALL_TUPLE_1 15,689,832 15,689,948 0.0%
TO_BOOL_NONE 498,555,502 498,552,140 -0.0%
INSTRUMENTED_RETURN_VALUE 29,134,260 29,134,440 0.0%
COMPARE_OP_FLOAT 180,937,966 180,939,012 0.0%
STORE_FAST_LOAD_FAST 178,236,471 178,237,291 0.0%
STORE_DEREF 72,249,817 72,250,093 0.0%
STORE_SUBSCR_LIST_INT 443,334,907 443,336,447 0.0%
LOAD_GLOBAL 14,688,286 14,688,257 -0.0%
DELETE_ATTR 1,625,184 1,625,187 0.0%
CALL_STR_1 71,766,018 71,766,150 0.0%
CALL_INTRINSIC_1 183,571,691 183,572,023 0.0%
LOAD_ATTR_METHOD_LAZY_DICT 74,966,439 74,966,561 0.0%
CALL_METHOD_DESCRIPTOR_O 255,183,194 255,182,780 -0.0%
UNARY_NEGATIVE 127,568,636 127,568,778 0.0%
STORE_ATTR 67,041,641 67,041,711 0.0%
STORE_ATTR_SLOT 975,414,007 975,414,987 0.0%
EXIT_INIT_CHECK 74,671,580 74,671,655 0.0%
CALL_ALLOC_AND_ENTER_INIT 76,725,855 76,725,930 0.0%
CALL_KW_NON_PY 83,464,934 83,464,998 0.0%
JUMP_BACKWARD_NO_INTERRUPT 418,036,613 418,036,427 -0.0%
BINARY_OP_ADD_INT 3,442,395,797 3,442,397,254 0.0%
TO_BOOL_ALWAYS_TRUE 209,973,968 209,974,050 0.0%
GET_YIELD_FROM_ITER 35,910,132 35,910,144 0.0%
BINARY_SLICE 179,842,623 179,842,670 0.0%
UNPACK_SEQUENCE_LIST 61,918,259 61,918,275 0.0%
BINARY_OP_SUBTRACT_INT 1,619,098,446 1,619,098,826 0.0%
BINARY_OP_MULTIPLY_INT 277,373,336 277,373,385 0.0%
BINARY_SUBSCR_GETITEM 154,780,156 154,780,169 0.0%
STORE_SUBSCR 701,137,346 701,137,395 0.0%
DELETE_SUBSCR 131,508,567 131,508,564 -0.0%
SEND_GEN 593,512,126 593,512,138 0.0%
BINARY_OP_MULTIPLY_FLOAT 1,053,387,354 1,053,387,353 -0.0%
RETURN_CONST 1,582,376,748
BINARY_SUBSCR_STR_INT 1,255,874,976 1,255,874,976 0.0%
END_SEND 302,934,350 302,934,350 0.0%
GET_AWAITABLE 173,019,749 173,019,749 0.0%
BUILD_SLICE 156,861,882 156,861,882 0.0%
SEND 129,104,887 129,104,887 0.0%
FORMAT_SIMPLE 120,810,596 120,810,596 0.0%
CONVERT_VALUE 114,790,073 114,790,073 0.0%
STORE_SLICE 112,686,502 112,686,502 0.0%
GET_ANEXT 100,136,760 100,136,760 0.0%
BINARY_OP_ADD_UNICODE 69,851,931 69,851,931 0.0%
BUILD_STRING 60,764,764 60,764,764 0.0%
INSTRUMENTED_LINE 58,270,440 58,270,440 0.0%
INSTRUMENTED_RESUME 29,134,740 29,134,740 0.0%
STORE_ATTR_WITH_HINT 8,976,815 8,976,815 0.0%
BINARY_OP_INPLACE_ADD_UNICODE 6,451,585 6,451,585 0.0%
STORE_GLOBAL 6,152,511 6,152,511 0.0%
END_ASYNC_FOR 6,000,000 6,000,000 0.0%
GET_AITER 6,000,000 6,000,000 0.0%
RERAISE 2,184,504 2,184,504 0.0%
UNPACK_EX 781,020 781,020 0.0%
CLEANUP_THROW 98,794 98,794 0.0%
SET_UPDATE 84,554 84,554 0.0%
SET_ADD 59,636 59,636 0.0%
STORE_NAME 57,952 57,952 0.0%
LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 56,314 56,314 0.0%
DICT_UPDATE 17,723 17,723 0.0%
WITH_EXCEPT_START 5,359 5,359 0.0%
LOAD_BUILD_CLASS 3,944 3,944 0.0%
LOAD_LOCALS 3,649 3,649 0.0%
FORMAT_WITH_SPEC 2,753 2,753 0.0%
LOAD_SUPER_ATTR 2,752 2,752 0.0%
LOAD_FROM_DICT_OR_DEREF 1,476 1,476 0.0%
INSTRUMENTED_RETURN_CONST 180
SETUP_ANNOTATIONS 170 170 0.0%
INSTRUMENTED_JUMP_BACKWARD 120 120 0.0%
DELETE_NAME 40 40 0.0%
LOAD_FROM_DICT_OR_GLOBALS 3 3 0.0%
LOAD_INT 7,212,529,567
LOAD_CONST_IMMORTAL 6,417,663,761

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
miss

Specialized instructions that deopt.

37,796,558 0.5% 37,900,147 0.5% 0.3%
deferred

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

1,057,069,373 12.6% 1,059,386,635 12.6% 0.2%
hit

Specialized instructions that complete.

7,293,902,459 86.9% 7,294,133,573 86.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 1,189,732 62.3% 1,196,107 62.4% 0.5%
Success 719,306 37.7% 721,261 37.6% 0.3%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
add different types 163,012 13.7% 168,882 14.1% 3.6%
or 7,268 0.6% 7,475 0.6% 2.8%
and int 34,637 2.9% 34,960 2.9% 0.9%
and other 1,249 0.1% 1,253 0.1% 0.3%
floor divide 34,025 2.9% 34,004 2.8% -0.1%
remainder 43,043 3.6% 43,029 3.6% -0.0%
rshift 23,513 2.0% 23,510 2.0% -0.0%
add other 36,760 3.1% 36,764 3.1% 0.0%
subtract different types 580,532 48.8% 580,537 48.5% 0.0%
multiply different types 175,029 14.7% 175,029 14.6% 0.0%
true divide different types 19,887 1.7% 19,887 1.7% 0.0%
lshift 19,490 1.6% 19,490 1.6% 0.0%
xor 18,783 1.6% 18,783 1.6% 0.0%
true divide float 11,592 1.0% 11,592 1.0% 0.0%
subtract other 8,515 0.7% 8,515 0.7% 0.0%
power 8,208 0.7% 8,208 0.7% 0.0%
multiply other 2,678 0.2% 2,678 0.2% 0.0%
true divide other 1,427 0.1% 1,427 0.1% 0.0%
and different types 84 0.0% 84 0.0% 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.

179,842,623 100.0% 179,842,670 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.

2,354,509,430 32.8% 2,354,249,043 32.8% -0.0%
hit

Specialized instructions that complete.

4,808,191,859 67.1% 4,808,169,589 67.1% -0.0%
miss

Specialized instructions that deopt.

5,926,261 0.1% 5,926,276 0.1% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 606,375 83.5% 606,308 83.5% -0.0%
Success 119,850 16.5% 119,850 16.5% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 196,836 32.5% 196,774 32.5% -0.0%
tuple slice 12,527 2.1% 12,526 2.1% -0.0%
list slice 192,268 31.7% 192,263 31.7% -0.0%
out of range 46,681 7.7% 46,682 7.7% 0.0%
array int 121,418 20.0% 121,418 20.0% 0.0%
buffer int 28,959 4.8% 28,959 4.8% 0.0%
string slice 3,636 0.6% 3,636 0.6% 0.0%
sequence int 2,941 0.5% 2,941 0.5% 0.0%
buffer slice 1,015 0.2% 1,015 0.2% 0.0%
code complex parameters 73 0.0% 73 0.0% 0.0%
array slice 21 0.0% 21 0.0% 0.0%

CALL

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

Specialized instructions that deopt.

152,121,106 1.4% 152,046,472 1.4% -0.0%
hit

Specialized instructions that complete.

10,571,824,670 98.6% 10,576,758,285 98.6% 0.0%
deferred

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

204,304 0.0% 204,380 0.0% 0.0%
deopt

Specialized instructions that deopt.

22,186 0.0% 22,186 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 3,030,113 100.0% 3,028,591 100.0% -0.1%
Failure 486 0.0% 486 0.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
init not simple 732 150.6% 732 150.6% 0.0%
out of versions 486 100.0% 486 100.0% 0.0%
init not inline values 374 77.0% 374 77.0% 0.0%
init not python 288 59.3% 288 59.3% 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.

109,638 15.4% 109,638 15.4% 0.0%
miss

Specialized instructions that deopt.

592,926 83.5% 592,926 83.5% 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.

1,087,862 0.0% 1,145,611 0.0% 5.3%
hit

Specialized instructions that complete.

4,361,911,950 89.4% 4,362,605,840 89.4% 0.0%
deferred

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

517,129,827 10.6% 517,180,311 10.6% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 28,320 12.7% 29,384 13.0% 3.8%
Failure 195,358 87.3% 196,395 87.0% 0.5%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
float long 13,057 6.7% 14,193 7.2% 8.7%
bool 2,017 1.0% 1,986 1.0% -1.5%
other 7,865 4.0% 7,891 4.0% 0.3%
big int 23,451 12.0% 23,401 11.9% -0.2%
different types 29,521 15.1% 29,489 15.0% -0.1%
set 6,824 3.5% 6,821 3.5% -0.0%
baseobject 11,949 6.1% 11,947 6.1% -0.0%
tuple 90,334 46.2% 90,327 46.0% -0.0%
string 7,639 3.9% 7,639 3.9% 0.0%
bytes 1,358 0.7% 1,358 0.7% 0.0%
list 999 0.5% 999 0.5% 0.0%
long float 344 0.2% 344 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.

151,477,870 7.4% 151,328,048 7.4% -0.1%
hit

Specialized instructions that complete.

1,901,122,100 92.5% 1,901,499,220 92.5% 0.0%
miss

Specialized instructions that deopt.

1,916,987 0.1% 1,916,987 0.1% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 58,704 60.4% 58,656 60.4% -0.1%
Success 38,438 39.6% 38,438 39.6% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 12,035 20.5% 11,995 20.4% -0.3%
tuple 11,998 20.4% 11,990 20.4% -0.1%
str 20,310 34.6% 20,310 34.6% 0.0%
list 14,361 24.5% 14,361 24.5% 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.

3,284,785,798 72.4% 3,285,794,020 72.4% 0.0%
deferred

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

1,088,135,563 24.0% 1,087,810,811 24.0% -0.0%
miss

Specialized instructions that deopt.

163,919,998 3.6% 163,957,749 3.6% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 330,537 9.6% 332,151 9.7% 0.5%
Success 3,096,243 90.4% 3,096,961 90.3% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
dict items 64,883 19.6% 66,566 20.0% 2.6%
set 19,484 5.9% 19,425 5.8% -0.3%
itertools 4,487 1.4% 4,479 1.3% -0.2%
dict values 6,363 1.9% 6,360 1.9% -0.0%
other 10,441 3.2% 10,438 3.1% -0.0%
enumerate 26,532 8.0% 26,536 8.0% 0.0%
zip 172,057 52.1% 172,057 51.8% 0.0%
seq iter 14,944 4.5% 14,944 4.5% 0.0%
ascii string 3,439 1.0% 3,439 1.0% 0.0%
reversed list 2,980 0.9% 2,980 0.9% 0.0%
dict keys 2,797 0.8% 2,797 0.8% 0.0%
bytes 1,264 0.4% 1,264 0.4% 0.0%
map 736 0.2% 736 0.2% 0.0%
callable 130 0.0% 130 0.0% 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.

745,727,616 5.5% 747,739,790 5.5% 0.3%
hit

Specialized instructions that complete.

11,877,441,425 87.9% 11,885,642,039 87.9% 0.1%
miss

Specialized instructions that deopt.

882,053,971 6.5% 882,056,569 6.5% 0.0%
deopt

Specialized instructions that deopt.

1,404,480 0.0% 1,404,480 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 287,527 1.6% 287,960 1.6% 0.2%
Success 17,884,108 98.4% 17,884,061 98.4% -0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
overriding descriptor 59,190 20.6% 59,510 20.7% 0.5%
non overriding descriptor 6,424 2.2% 6,451 2.2% 0.4%
class method obj 16,919 5.9% 16,932 5.9% 0.1%
module attr not found 1,363 0.5% 1,362 0.5% -0.1%
not managed dict 1,567 0.5% 1,568 0.5% 0.1%
method 82,673 28.8% 82,718 28.7% 0.1%
metaclass attribute 25,277 8.8% 25,271 8.8% -0.0%
mutable class 62,261 21.7% 62,247 21.6% -0.0%
overridden 8,859 3.1% 8,859 3.1% 0.0%
not in dict 7,585 2.6% 7,585 2.6% 0.0%
expected error 2,729 0.9% 2,729 0.9% 0.0%
class attr simple 1,518 0.5% 1,518 0.5% 0.0%
non object slot 1,255 0.4% 1,255 0.4% 0.0%
builtin class method 1,224 0.4% 1,224 0.4% 0.0%
out of versions 421 0.1% 421 0.1% 0.0%
wrong number arguments 235 0.1% 235 0.1% 0.0%
split dict 140 0.0% 140 0.0% 0.0%
property 48 0.0% 48 0.0% 0.0%
property not py function 40 0.0% 40 0.0% 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.

8,900,317,317 99.8% 8,905,953,005 99.8% 0.1%
deferred

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

14,586,220 0.2% 14,586,264 0.2% 0.0%
deopt

Specialized instructions that deopt.

1,485 0.0% 1,485 0.0% 0.0%
miss

Specialized instructions that deopt.

32,321 0.0% 32,321 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 102,813 100.0% 102,740 100.0% -0.1%
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.

62,427,367 100.0% 63,074,447 100.0% 1.0%
deferred

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

254 0.0% 254 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 2,498 100.0% 2,498 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
hit

Specialized instructions that complete.

593,497,412 82.1% 593,497,424 82.1% 0.0%
deferred

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

129,069,604 17.9% 129,069,604 17.9% 0.0%
miss

Specialized instructions that deopt.

14,714 0.0% 14,714 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 709 2.0% 709 2.0% 0.0%
Failure 34,846 98.0% 34,846 98.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
async generator send 24,440 70.1% 24,440 70.1% 0.0%
other 6,387 18.3% 6,387 18.3% 0.0%
list 3,261 9.4% 3,261 9.4% 0.0%
tuple 752 2.2% 752 2.2% 0.0%
dict keys 6 0.0% 6 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.

1,826,528,594 90.5% 1,827,709,070 90.5% 0.1%
miss

Specialized instructions that deopt.

124,605,997 6.2% 124,603,503 6.2% -0.0%
deferred

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

66,965,093 3.3% 66,965,169 3.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 45,047 1.9% 45,045 1.9% -0.0%
Success 2,381,947 98.1% 2,381,856 98.1% -0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
not managed dict 2,010 4.5% 2,007 4.5% -0.1%
overridden 1,917 4.3% 1,918 4.3% 0.1%
class attr simple 22,020 48.9% 22,020 48.9% 0.0%
not in dict 8,652 19.2% 8,652 19.2% 0.0%
overriding descriptor 5,959 13.2% 5,959 13.2% 0.0%
property 1,744 3.9% 1,744 3.9% 0.0%
not in keys 895 2.0% 895 2.0% 0.0%
mutable class 645 1.4% 645 1.4% 0.0%
method 636 1.4% 636 1.4% 0.0%
split dict 365 0.8% 365 0.8% 0.0%
no dict 110 0.2% 110 0.2% 0.0%
non object slot 94 0.2% 94 0.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.

112,686,502 100.0% 112,686,502 100.0% 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.

674,119,228 49.0% 674,521,347 49.0% 0.1%
deferred

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

700,952,457 51.0% 700,952,510 51.0% 0.0%
miss

Specialized instructions that deopt.

2,220 0.0% 2,220 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 2,298 1.2% 2,294 1.2% -0.2%
Failure 182,631 98.8% 182,631 98.8% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 86,612 47.4% 86,612 47.4% 0.0%
array int 48,931 26.8% 48,931 26.8% 0.0%
dict subclass no override 19,428 10.6% 19,428 10.6% 0.0%
py simple 17,664 9.7% 17,664 9.7% 0.0%
bytearray int 5,311 2.9% 5,311 2.9% 0.0%
list slice 2,934 1.6% 2,934 1.6% 0.0%
out of range 1,680 0.9% 1,680 0.9% 0.0%
array slice 68 0.0% 68 0.0% 0.0%
buffer slice 3 0.0% 3 0.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.

4,687,468,324 92.6% 4,690,529,076 92.6% 0.1%
miss

Specialized instructions that deopt.

112,293,314 2.2% 112,288,334 2.2% -0.0%
deferred

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

263,386,110 5.2% 263,384,562 5.2% -0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 626,793 22.5% 626,278 22.5% -0.1%
Success 2,152,883 77.5% 2,152,754 77.5% -0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
mapping 77,666 12.4% 77,166 12.3% -0.6%
tuple 95,985 15.3% 95,956 15.3% -0.0%
dict 20,461 3.3% 20,455 3.3% -0.0%
other 133,814 21.3% 133,833 21.4% 0.0%
bytes 16,666 2.7% 16,668 2.7% 0.0%
set 15,256 2.4% 15,255 2.4% -0.0%
number 258,644 41.3% 258,644 41.3% 0.0%
sequence 7,547 1.2% 7,547 1.2% 0.0%
float 631 0.1% 631 0.1% 0.0%
bytearray 83 0.0% 83 0.0% 0.0%
memory view 40 0.0% 40 0.0% 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.

1,190,315,734 99.8% 1,190,085,499 99.8% -0.0%
deferred

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

1,820,651 0.2% 1,820,752 0.2% 0.0%
miss

Specialized instructions that deopt.

3,700 0.0% 3,700 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 1,049 12.4% 1,044 12.4% -0.5%
Success 7,395 87.6% 7,395 87.6% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
sequence 813 77.5% 808 77.4% -0.6%
iterator 145 13.8% 145 13.9% 0.0%
other 91 8.7% 91 8.7% 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.

69,676,354,951 34.9% 76,127,764,569 37.8% 9.3%
Basic

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

121,010,129,281 60.6% 116,237,216,847 57.8% -3.9%
Not specialized

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

7,388,842,379 3.7% 7,392,494,695 3.7% 0.0%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

1,482,496,690 0.7% 1,482,616,022 0.7% 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 745,727,616 10.1% 747,739,790 10.1% 0.3%
BINARY_OP 1,057,069,373 14.3% 1,059,386,635 14.3% 0.2%
CONTAINS_OP 151,477,870 2.1% 151,328,048 2.0% -0.1%
FOR_ITER 1,088,135,563 14.7% 1,087,810,811 14.7% -0.0%
BINARY_SUBSCR 2,354,509,430 31.9% 2,354,249,043 31.9% -0.0%
COMPARE_OP 517,129,827 7.0% 517,180,311 7.0% 0.0%
TO_BOOL 263,386,110 3.6% 263,384,562 3.6% -0.0%
BINARY_SLICE 179,842,623 2.4% 179,842,670 2.4% 0.0%
STORE_SUBSCR 700,952,457 9.5% 700,952,510 9.5% 0.0%
SEND 129,069,604 1.7% 129,069,604 1.7% 0.0%

Misses by instruction

Breakdown of misses (specialized deopts) instruction counts by family
Name Base Count Base Ratio Head Count Head Ratio Change
FOR_ITER_TUPLE 81,881,697 5.5% 81,915,574 5.5% 0.0%
LOAD_ATTR_SLOT 90,970,532 6.1% 90,975,400 6.1% 0.0%
FOR_ITER_LIST 81,959,607 5.5% 81,963,487 5.5% 0.0%
CALL_PY_EXACT_ARGS 80,921,675 5.5% 80,922,692 5.5% 0.0%
LOAD_ATTR_INSTANCE_VALUE 382,512,764 25.8% 382,511,943 25.8% -0.0%
TO_BOOL_ALWAYS_TRUE 49,766,267 3.4% 49,766,352 3.4% 0.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 85,145,384 5.7% 85,145,515 5.7% 0.0%
LOAD_ATTR_METHOD_WITH_VALUES 265,611,879 17.9% 265,612,118 17.9% 0.0%
TO_BOOL_NONE 55,238,996 3.7% 55,238,972 3.7% -0.0%
STORE_ATTR_INSTANCE_VALUE 101,763,592 6.9% 101,763,592 6.9% 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 (legacy) 4,273,460 0.1% 4,262,459 0.1% -0.3%
Frames pushed 5,214,891,971 78.8% 5,220,264,699 78.8% 0.1%
Calls via PyEval_EvalFrame (function vectorcall) 1,113,563,331 16.8% 1,114,567,139 16.8% 0.1%
Calls via PyEval_EvalFrame (vector) 1,117,840,735 16.9% 1,118,833,542 16.9% 0.1%
Calls to Python functions inlined 4,857,364,477 73.4% 4,861,504,329 73.4% 0.1%
Calls to PyEval_EvalDefault 1,763,297,046 26.6% 1,764,148,518 26.6% 0.0%
Calls via PyEval_EvalFrame (total) 1,763,297,046 26.6% 1,764,148,518 26.6% 0.0%
Calls via PyEval_EvalFrame (api) 279,170,599 4.2% 279,290,818 4.2% 0.0%
Calls via PyEval_EvalFrame (generator) 645,456,311 9.7% 645,314,976 9.7% -0.0%
Calls via PyEval_EvalFrame (function ex) 24,999,631 0.4% 24,999,890 0.4% 0.0%
Calls via PyEval_EvalFrame (slot) 262,223,725 4.0% 262,225,313 4.0% 0.0%
Frame objects created 68,919,288 1.0% 68,919,527 1.0% 0.0%
Calls via PyEval_EvalFrame (method) 133,173,386 2.0% 133,173,398 2.0% 0.0%
Calls via PyEval_EvalFrame (build class) 3,944 0.0% 3,944 0.0% 0.0%

Object stats

Allocations, frees and dict materializatons

Below, "allocations" means "allocations that are not from a freelist". Total allocations = "Allocations from freelist" + "Allocations".

"Inline values" is the number of values arrays inlined into objects.

The cache hit/miss numbers are for the MRO cache, split into dunder and other names.

Base Count Base Ratio Head Count Head Ratio Change
Interpreter immortal increfs 40,824,027,603 24.6% 27,215,256,390 17.9% -33.3%
Method cache dunder misses 8,576,567 10,022,988 16.9%
Method cache collisions 66,256,200 69,516,688 4.9%
Method cache misses 58,468,327 60,284,007 3.1%
Inline values 177,473,022 177,943,798 0.3%
Immortal decrefs 23,582,181,144 12.8% 23,596,545,374 12.8% 0.1%
Mortal increfs 23,972,262,951 14.5% 23,986,306,473 15.8% 0.1%
Mortal decrefs 32,138,930,127 17.4% 32,155,088,616 17.4% 0.1%
Interpreter immortal decrefs 44,456,619,042 24.1% 44,477,278,347 24.1% 0.0%
Immortal increfs 25,350,496,564 15.3% 25,361,847,612 16.7% 0.0%
Interpreter mortal decrefs 84,259,674,696 45.7% 84,296,395,179 45.7% 0.0%
Interpreter mortal increfs 75,591,663,353 45.6% 75,623,517,929 49.7% 0.0%
Frees to freelist 8,349,698,831 8,353,185,161 0.0%
Allocations from freelist 8,349,548,820 45.4% 8,353,029,483 45.4% 0.0%
Frees 10,639,970,754 10,643,989,009 0.0%
Method cache hits 2,189,444,941 2,190,221,486 0.0%
Allocations to 512 bytes 9,978,246,423 54.2% 9,980,945,293 54.2% 0.0%
Allocations 10,055,388,075 54.6% 10,058,080,920 54.6% 0.0%
Method cache dunder hits 3,062,463,586 3,062,857,167 0.0%
Allocations to 4 kbytes 70,839,766 0.4% 70,833,661 0.4% -0.0%
Allocations over 4 kbytes 6,301,886 0.0% 6,301,966 0.0% 0.0%
Materialize dict (on request) 4,443,443 2.5% 4,443,443 2.5% 0.0%
Materialize dict (new key) 392,275 0.2% 392,275 0.2% 0.0%
Materialize dict (too big) 13,407 0.0% 13,407 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 Head Collections Head Objects collected Head Object visits
0 0 0 0 0 0 0
1 354,220 100,984,867 15,201,361,329 354,263 101,429,676 15,034,588,633
2 7,998 4,366,432 5,245,517,734 7,998 4,366,437 5,240,926,332

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__ = ...

22,592 22,592 0.0%
set bases

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

29 29 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.

29 29 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 1,794 1,794 0.0%

Stats gathered on: 2024-10-25