Skip to content

Latest commit

 

History

History
6798 lines (6488 loc) · 148 KB

bm-20240430-azure-x86_64-faster%2dcpython-unify_tier_2_for_ite-3.13.0a6+-04feb78-pystats-vs-base.md

File metadata and controls

6798 lines (6488 loc) · 148 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
FOR_ITER_TUPLE 9,322,669 127,573,632 1,268.4%
FOR_ITER_LIST 25,033,007 261,247,125 943.6%
SET_ADD 240,278 965,777 301.9%
STORE_FAST_LOAD_FAST 15,894,646 37,144,433 133.7%
FOR_ITER_RANGE 30,114,263 52,714,319 75.0%
DELETE_SUBSCR 176,287,946 79,744,868 -54.8%
CONVERT_VALUE 87,548,384 135,326,028 54.6%
FORMAT_SIMPLE 97,516,060 145,188,189 48.9%
BUILD_STRING 50,582,232 74,244,010 46.8%
STORE_SLICE 12,601,781 7,504,627 -40.4%
CALL_TYPE_1 147,540,690 198,129,132 34.3%
CONTAINS_OP_DICT 104,180,045 138,841,860 33.3%
CALL_BUILTIN_FAST 305,269,263 403,755,829 32.3%
MAP_ADD 39,181,116 27,340,378 -30.2%
DELETE_ATTR 6,693,199 4,683,148 -30.0%
BINARY_OP_MULTIPLY_FLOAT 146,529,174 190,322,142 29.9%
UNPACK_SEQUENCE_TWO_TUPLE 254,275,371 328,075,619 29.0%
BUILD_CONST_KEY_MAP 7,422,984 5,316,442 -28.4%
CALL_METHOD_DESCRIPTOR_O 391,910,533 289,288,945 -26.2%
UNPACK_SEQUENCE_TUPLE 198,213,376 246,274,994 24.2%
BINARY_SUBSCR 263,984,989 324,754,187 23.0%
TO_BOOL_STR 76,383,941 60,750,409 -20.5%
BUILD_TUPLE 539,405,584 436,473,441 -19.1%
CONTAINS_OP 101,980,758 83,678,292 -17.9%
BINARY_OP 569,933,157 472,289,955 -17.1%
LOAD_DEREF 529,282,057 603,648,531 14.1%
FOR_ITER 118,806,903 102,253,118 -13.9%
SWAP 489,873,072 425,022,432 -13.2%
LOAD_GLOBAL_BUILTIN 2,342,080,774 2,595,321,066 10.8%
UNARY_NOT 28,362,762 25,382,935 -10.5%
STORE_FAST 5,404,229,577 5,948,241,263 10.1%
LOAD_FAST_AND_CLEAR 85,733,933 77,900,752 -9.1%
POP_TOP 3,374,250,446 3,678,351,487 9.0%
LOAD_ATTR_METHOD_NO_DICT 1,282,500,727 1,174,183,482 -8.4%
BINARY_SUBSCR_DICT 400,497,462 433,814,773 8.3%
STORE_FAST_STORE_FAST 382,367,297 413,926,093 8.3%
TO_BOOL_BOOL 2,619,357,899 2,817,033,905 7.5%
CONTAINS_OP_SET 340,817,414 366,260,529 7.5%
BINARY_OP_INPLACE_ADD_UNICODE 4,824,622 5,184,215 7.5%
EXTENDED_ARG 58,000,711 62,107,085 7.1%
LIST_APPEND 94,641,211 101,208,725 6.9%
GET_ITER 559,498,490 524,892,076 -6.2%
DICT_MERGE 42,881,386 45,415,762 5.9%
CALL_BUILTIN_CLASS 158,275,650 149,087,423 -5.8%
LOAD_ATTR_METHOD_WITH_VALUES 1,433,195,592 1,513,936,004 5.6%
POP_JUMP_IF_TRUE 1,174,337,703 1,240,377,925 5.6%
STORE_ATTR_INSTANCE_VALUE 1,129,197,042 1,065,717,649 -5.6%
TO_BOOL_INT 127,908,705 120,757,852 -5.6%
CALL_ISINSTANCE 760,301,679 800,277,378 5.3%
TO_BOOL_LIST 113,081,354 107,485,193 -4.9%
ENTER_EXECUTOR 2,987,110,252 2,839,356,248 -4.9%
LIST_EXTEND 27,961,573 29,277,767 4.7%
BINARY_OP_ADD_FLOAT 72,562,392 69,196,914 -4.6%
BINARY_SUBSCR_GETITEM 62,131,885 64,907,632 4.5%
BINARY_SUBSCR_TUPLE_INT 178,749,971 186,029,027 4.1%
COMPARE_OP 131,239,575 136,558,613 4.1%
POP_JUMP_IF_FALSE 5,001,385,717 5,197,685,900 3.9%
POP_JUMP_IF_NOT_NONE 658,766,873 633,428,678 -3.8%
CALL_LEN 286,030,880 275,819,486 -3.6%
POP_JUMP_IF_NONE 383,241,080 370,275,289 -3.4%
STORE_SUBSCR_DICT 146,455,247 142,315,983 -2.8%
CALL_PY_EXACT_ARGS 2,537,825,959 2,607,522,234 2.7%
CALL_TUPLE_1 21,331,969 20,747,115 -2.7%
LOAD_ATTR_METHOD_LAZY_DICT 246,013,453 252,038,089 2.4%
CALL_METHOD_DESCRIPTOR_FAST 364,381,894 355,947,265 -2.3%
CALL_METHOD_DESCRIPTOR_NOARGS 247,647,861 241,919,079 -2.3%
LOAD_ATTR_INSTANCE_VALUE 3,966,061,266 3,877,917,539 -2.2%
BUILD_MAP 122,818,875 120,193,253 -2.1%
LOAD_ATTR_WITH_HINT 233,243,353 238,206,691 2.1%
UNPACK_SEQUENCE 529,624 540,674 2.1%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 40,662,728 41,407,081 1.8%
LOAD_FAST_CHECK 11,090,503 10,887,552 -1.8%
BINARY_OP_ADD_UNICODE 72,104,727 70,801,336 -1.8%
TO_BOOL 232,286,164 228,261,407 -1.7%
RETURN_VALUE 4,013,229,156 4,082,638,860 1.7%
COMPARE_OP_STR 310,740,134 316,064,943 1.7%
LOAD_GLOBAL_MODULE 3,243,389,913 3,298,068,800 1.7%
PUSH_NULL 1,077,004,968 1,094,820,431 1.7%
LOAD_CONST 5,654,125,516 5,566,987,205 -1.5%
LOAD_FAST 21,804,805,898 22,102,977,235 1.4%
CALL_BUILTIN_O 520,162,823 526,947,516 1.3%
JUMP_FORWARD 427,161,884 422,047,167 -1.2%
MAKE_CELL 103,581,938 104,775,023 1.2%
COMPARE_OP_INT 1,150,572,046 1,137,899,481 -1.1%
STORE_SUBSCR_LIST_INT 98,669,698 99,720,415 1.1%
BINARY_SUBSCR_LIST_INT 412,574,212 408,466,445 -1.0%
IS_OP 410,824,399 414,907,435 1.0%
LOAD_ATTR_SLOT 1,657,367,839 1,641,274,888 -1.0%
RESUME_CHECK 6,333,687,206 6,394,671,415 1.0%
CALL_INTRINSIC_1 153,640,215 154,993,917 0.9%
COPY 484,366,323 488,620,388 0.9%
BUILD_LIST 225,463,095 223,661,783 -0.8%
LOAD_ATTR 782,190,528 776,098,574 -0.8%
INSTRUMENTED_JUMP_BACKWARD 6,212 6,260 0.8%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 118,810,744 117,983,367 -0.7%
BINARY_OP_SUBTRACT_INT 383,212,750 385,853,724 0.7%
STORE_DEREF 94,323,245 94,908,122 0.6%
STORE_SUBSCR 69,679,233 70,042,475 0.5%
TO_BOOL_NONE 500,872,015 498,364,077 -0.5%
STORE_ATTR_SLOT 1,497,125,190 1,490,726,859 -0.4%
UNPACK_SEQUENCE_LIST 8,183,835 8,217,328 0.4%
LOAD_ATTR_PROPERTY 61,394,355 61,148,893 -0.4%
LOAD_FAST_LOAD_FAST 4,749,113,161 4,767,367,316 0.4%
BINARY_SLICE 223,892,264 224,664,021 0.3%
TO_BOOL_ALWAYS_TRUE 180,195,901 179,624,245 -0.3%
BINARY_OP_ADD_INT 642,690,608 644,697,470 0.3%
UNARY_INVERT 2,034,889 2,040,849 0.3%
SET_FUNCTION_ATTRIBUTE 53,514,040 53,357,309 -0.3%
CALL_STR_1 38,332,258 38,441,407 0.3%
LOAD_ATTR_NONDESCRIPTOR_NO_DICT 62,356,049 62,525,004 0.3%
LOAD_ATTR_CLASS 139,134,463 138,776,595 -0.3%
MAKE_FUNCTION 65,589,446 65,445,871 -0.2%
BINARY_OP_MULTIPLY_INT 164,098,748 163,744,691 -0.2%
STORE_GLOBAL 6,929,920 6,944,700 0.2%
CALL_BOUND_METHOD_EXACT_ARGS 184,561,516 184,297,981 -0.1%
RETURN_CONST 2,050,103,455 2,047,291,175 -0.1%
INTERPRETER_EXIT 2,311,755,604 2,308,964,439 -0.1%
STORE_ATTR 71,038,424 70,956,717 -0.1%
LOAD_ATTR_MODULE 519,606,644 519,027,833 -0.1%
BINARY_SUBSCR_STR_INT 455,276,518 455,665,370 0.1%
RETURN_GENERATOR 414,263,913 413,941,955 -0.1%
UNARY_NEGATIVE 145,893,407 145,995,166 0.1%
CALL_BUILTIN_FAST_WITH_KEYWORDS 40,853,627 40,828,851 -0.1%
DICT_UPDATE 73,490 73,452 -0.1%
COPY_FREE_VARS 287,013,235 287,157,800 0.1%
BEFORE_WITH 10,084,662 10,080,720 -0.0%
LOAD_SUPER_ATTR 23,573 23,565 -0.0%
BUILD_SLICE 71,719,213 71,695,340 -0.0%
JUMP_BACKWARD 1,676,306 1,676,799 0.0%
DELETE_FAST 2,232,572 2,231,927 -0.0%
RERAISE 4,244,585 4,243,429 -0.0%
FOR_ITER_GEN 83,330,318 83,352,812 0.0%
LOAD_SUPER_ATTR_METHOD 126,670,852 126,638,040 -0.0%
CHECK_EXC_MATCH 24,470,055 24,465,047 -0.0%
POP_EXCEPT 24,973,885 24,968,907 -0.0%
PUSH_EXC_INFO 24,981,655 24,976,679 -0.0%
YIELD_VALUE 1,355,126,404 1,354,906,614 -0.0%
RESUME 345,460 345,413 -0.0%
BINARY_OP_SUBTRACT_FLOAT 75,390,063 75,400,144 0.0%
RAISE_VARARGS 6,185,474 6,185,044 -0.0%
IMPORT_FROM 13,105,204 13,104,308 -0.0%
CALL_PY_WITH_DEFAULTS 216,506,294 216,492,423 -0.0%
IMPORT_NAME 12,437,044 12,436,278 -0.0%
STORE_ATTR_WITH_HINT 62,856,298 62,852,453 -0.0%
COMPARE_OP_FLOAT 149,894,275 149,885,850 -0.0%
CALL 1,208,358,635 1,208,305,125 -0.0%
NOP 919,050,508 919,010,219 -0.0%
BUILD_SET 2,329,834 2,329,757 -0.0%
WITH_EXCEPT_START 233,490 233,483 -0.0%
LOAD_GLOBAL 20,773,312 20,772,741 -0.0%
CLEANUP_THROW 152,063 152,060 -0.0%
END_FOR 82,357,285 82,358,881 0.0%
JUMP_BACKWARD_NO_INTERRUPT 556,686,303 556,680,360 -0.0%
CALL_LIST_APPEND 348,145,792 348,142,568 -0.0%
LOAD_SUPER_ATTR_ATTR 7,751,831 7,751,767 -0.0%
SEND_GEN 787,117,718 787,115,718 -0.0%
BEFORE_ASYNC_WITH 3,005,926 3,005,920 -0.0%
GET_YIELD_FROM_ITER 46,592,624 46,592,542 -0.0%
GET_AWAITABLE 229,143,065 229,142,706 -0.0%
CALL_KW 273,955,050 273,954,712 -0.0%
END_SEND 402,624,934 402,624,579 -0.0%
SEND 173,840,668 173,840,612 -0.0%
CALL_FUNCTION_EX 218,826,223 218,826,202 -0.0%
EXIT_INIT_CHECK 94,703,946 94,703,938 -0.0%
CALL_ALLOC_AND_ENTER_INIT 96,992,008 96,992,000 -0.0%
INSTRUMENTED_RESUME 38,855,260 38,855,260 0.0%
INSTRUMENTED_RETURN_VALUE 38,851,520 38,851,520 0.0%
LOAD_NAME 8,145,287 8,145,287 0.0%
GET_ANEXT 8,000,960 8,000,960 0.0%
END_ASYNC_FOR 8,000,000 8,000,000 0.0%
GET_AITER 8,000,000 8,000,000 0.0%
UNPACK_EX 1,129,822 1,129,822 0.0%
STORE_NAME 641,202 641,202 0.0%
SET_UPDATE 200,488 200,488 0.0%
LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN 89,680 89,680 0.0%
LOAD_BUILD_CLASS 30,746 30,746 0.0%
LOAD_LOCALS 2,260 2,260 0.0%
LOAD_FROM_DICT_OR_DEREF 2,240 2,240 0.0%
INSTRUMENTED_RETURN_CONST 2,160 2,160 0.0%
FORMAT_WITH_SPEC 1,760 1,760 0.0%
SETUP_ANNOTATIONS 1,524 1,524 0.0%
DELETE_NAME 1,100 1,100 0.0%
INSTRUMENTED_JUMP_FORWARD 1,040 1,040 0.0%
CALL_INTRINSIC_2 80 80 0.0%

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.

598,961,048 28.1% 500,018,158 24.1% -16.5%
miss

Specialized instructions that deopt.

30,888,228 1.4% 29,508,393 1.4% -4.5%
hit

Specialized instructions that complete.

1,530,524,856 71.8% 1,575,692,243 75.8% 3.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 1,224,146 65.8% 1,170,229 65.7% -4.4%
Success 636,191 34.2% 609,961 34.3% -4.1%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
remainder 50,416 4.1% 26,614 2.3% -47.2%
add different types 78,526 6.4% 51,069 4.4% -35.0%
and different types 619 0.1% 580 0.0% -6.3%
multiply different types 92,002 7.5% 88,216 7.5% -4.1%
and int 36,727 3.0% 37,745 3.2% 2.8%
lshift 5,720 0.5% 5,828 0.5% 1.9%
subtract other 11,334 0.9% 11,534 1.0% 1.8%
true divide float 5,668 0.5% 5,764 0.5% 1.7%
xor 8,128 0.7% 8,264 0.7% 1.7%
rshift 8,863 0.7% 8,997 0.8% 1.5%
true divide other 3,441 0.3% 3,400 0.3% -1.2%
add other 64,269 5.3% 63,871 5.5% -0.6%
power 5,776 0.5% 5,748 0.5% -0.5%
true divide different types 12,523 1.0% 12,508 1.1% -0.1%
or 17,151 1.4% 17,170 1.5% 0.1%
and other 2,016 0.2% 2,014 0.2% -0.1%
floor divide 33,252 2.7% 33,236 2.8% -0.0%
subtract different types 782,495 63.9% 782,451 66.9% -0.0%
multiply other 5,220 0.4% 5,220 0.4% 0.0%

BINARY_SLICE

specialization stats for BINARY_SLICE family

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.

268,540,656 15.1% 329,294,716 17.6% 22.6%
hit

Specialized instructions that complete.

1,504,328,633 84.8% 1,543,980,739 82.4% 2.6%
miss

Specialized instructions that deopt.

4,901,415 0.3% 4,902,508 0.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 143,901 41.6% 160,136 44.2% 11.3%
Success 201,847 58.4% 201,843 55.8% -0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 25,085 17.4% 40,645 25.4% 62.0%
buffer slice 900 0.6% 880 0.5% -2.2%
tuple slice 188 0.1% 184 0.1% -2.1%
array int 15,880 11.0% 16,200 10.1% 2.0%
buffer int 22,243 15.5% 22,642 14.1% 1.8%
code complex parameters 4,998 3.5% 4,935 3.1% -1.3%
out of range 68,847 47.8% 68,890 43.0% 0.1%
sequence int 4,300 3.0% 4,300 2.7% 0.0%
list slice 1,360 0.9% 1,360 0.8% 0.0%
string slice 100 0.1% 100 0.1% 0.0%

CALL

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

Specialized instructions that deopt.

33,100 0.0% 28,860 0.0% -12.8%
hit

Specialized instructions that complete.

6,639,625,657 82.0% 6,768,992,197 82.3% 1.9%
miss

Specialized instructions that deopt.

245,109,647 3.0% 244,617,738 3.0% -0.2%
deferred

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

1,447,251,749 17.9% 1,446,715,956 17.6% -0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 5,254,767 84.5% 5,245,282 84.5% -0.2%
Failure 961,766 15.5% 961,625 15.5% -0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
metaclass 43,300 4.5% 43,182 4.5% -0.3%
bound method 12,030 1.3% 12,014 1.2% -0.1%
out of versions 981 0.1% 980 0.1% -0.1%
meth descr varargs keywords 20,889 2.2% 20,904 2.2% 0.1%
cfunc noargs 69,472 7.2% 69,511 7.2% 0.1%
cfunc varargs 14,255 1.5% 14,249 1.5% -0.0%
cfunc varargs keywords 32,260 3.4% 32,250 3.4% -0.0%
class no vectorcall 89,332 9.3% 89,311 9.3% -0.0%
other 65,816 6.8% 65,802 6.8% -0.0%
class mutable 24,739 2.6% 24,734 2.6% -0.0%
code complex parameters 185,195 19.3% 185,179 19.3% -0.0%
meth descr varargs 16,518 1.7% 16,517 1.7% -0.0%
meth descr method fastcall keywords 207,186 21.5% 207,198 21.5% 0.0%
init not inline values 105,557 11.0% 105,557 11.0% 0.0%
init not python 16,386 1.7% 16,386 1.7% 0.0%
wrong number arguments 13,753 1.4% 13,753 1.4% 0.0%
cmethod 13,620 1.4% 13,620 1.4% 0.0%
init not simple 12,278 1.3% 12,278 1.3% 0.0%
operator wrapper 10,136 1.1% 10,136 1.1% 0.0%
method wrapper 8,224 0.9% 8,224 0.9% 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.

132,656,051 7.6% 138,038,672 7.9% 4.1%
miss

Specialized instructions that deopt.

1,750,295 0.1% 1,819,394 0.1% 3.9%
hit

Specialized instructions that complete.

1,609,456,160 92.4% 1,602,030,880 92.0% -0.5%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 222,832 66.8% 227,086 66.9% 1.9%
Success 110,987 33.2% 112,249 33.1% 1.1%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
set 1,663 0.7% 2,343 1.0% 40.9%
bytes 3,680 1.7% 3,880 1.7% 5.4%
big int 58,961 26.5% 61,460 27.1% 4.2%
baseobject 31,179 14.0% 32,360 14.3% 3.8%
float long 16,209 7.3% 15,943 7.0% -1.6%
string 11,080 5.0% 10,920 4.8% -1.4%
tuple 14,550 6.5% 14,406 6.3% -1.0%
bool 3,788 1.7% 3,823 1.7% 0.9%
different types 54,033 24.2% 54,205 23.9% 0.3%
other 21,941 9.8% 21,999 9.7% 0.3%
long float 1,534 0.7% 1,536 0.7% 0.1%
list 4,214 1.9% 4,211 1.9% -0.1%

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.

104,334,443 19.1% 86,033,546 14.6% -17.5%
hit

Specialized instructions that complete.

442,451,219 80.9% 502,556,149 85.4% 13.6%
miss

Specialized instructions that deopt.

2,546,240 0.5% 2,546,240 0.4% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 125,043 64.9% 123,474 64.7% -1.3%
Success 67,512 35.1% 67,512 35.3% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
str 33,285 26.6% 29,944 24.3% -10.0%
list 18,064 14.4% 19,199 15.5% 6.3%
other 27,363 21.9% 27,835 22.5% 1.7%
tuple 46,331 37.1% 46,496 37.7% 0.4%

FOR_ITER

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

Specialized instructions that deopt.

330,613 0.1% 2,929,312 0.5% 786.0%
hit

Specialized instructions that complete.

147,469,644 55.3% 521,958,576 83.2% 253.9%
deferred

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

118,900,180 44.6% 104,901,985 16.7% -11.8%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 72,427 30.5% 121,389 43.3% 67.6%
Failure 164,909 69.5% 159,056 56.7% -3.5%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
seq iter 6,060 3.7% 3,780 2.4% -37.6%
dict items 50,177 30.4% 47,485 29.9% -5.4%
enumerate 19,752 12.0% 19,145 12.0% -3.1%
set 22,774 13.8% 22,429 14.1% -1.5%
dict values 6,790 4.1% 6,706 4.2% -1.2%
dict keys 14,549 8.8% 14,675 9.2% 0.9%
ascii string 2,640 1.6% 2,660 1.7% 0.8%
itertools 7,249 4.4% 7,258 4.6% 0.1%
zip 14,352 8.7% 14,352 9.0% 0.0%
other 10,999 6.7% 10,999 6.9% 0.0%
reversed list 7,865 4.8% 7,865 4.9% 0.0%
map 740 0.4% 740 0.5% 0.0%
bytes 660 0.4% 660 0.4% 0.0%
callable 282 0.2% 282 0.2% 0.0%
string 20 0.0% 20 0.0% 0.0%

LOAD_ATTR

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

Specialized instructions that deopt.

479,942,573 4.6% 429,534,631 4.1% -10.5%
deferred

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

1,251,113,517 11.9% 1,195,563,300 11.5% -4.4%
hit

Specialized instructions that complete.

9,239,831,592 88.0% 9,167,573,434 88.4% -0.8%
deopt

Specialized instructions that deopt.

680,343 0.0% 680,516 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 9,942,682 90.2% 8,991,663 89.3% -9.6%
Failure 1,076,902 9.8% 1,078,242 10.7% 0.1%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
non string or split 21,933 2.0% 20,636 1.9% -5.9%
non object slot 3,540 0.3% 3,382 0.3% -4.5%
builtin class method 3,797 0.4% 3,681 0.3% -3.1%
metaclass attribute 187,958 17.5% 191,420 17.8% 1.8%
class method obj 20,915 1.9% 20,538 1.9% -1.8%
not in keys 15,620 1.5% 15,840 1.5% 1.4%
out of versions 2,281 0.2% 2,310 0.2% 1.3%
non overriding descriptor 13,434 1.2% 13,314 1.2% -0.9%
mutable class 77,135 7.2% 77,683 7.2% 0.7%
method 114,182 10.6% 114,969 10.7% 0.7%
overridden 19,279 1.8% 19,150 1.8% -0.7%
class attr descriptor 29,980 2.8% 29,840 2.8% -0.5%
shadowed 138,232 12.8% 137,644 12.8% -0.4%
not managed dict 246,798 22.9% 246,102 22.8% -0.3%
module attr not found 17,662 1.6% 17,682 1.6% 0.1%
class attr simple 162,376 15.1% 162,271 15.0% -0.1%
wrong number arguments 1,100 0.1% 1,100 0.1% 0.0%
not in dict 320 0.0% 320 0.0% 0.0%
no dict 300 0.0% 300 0.0% 0.0%
property 60 0.0% 60 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.

5,585,012,106 99.6% 5,892,932,179 99.6% 5.5%
miss

Specialized instructions that deopt.

458,581 0.0% 457,687 0.0% -0.2%
deferred

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

20,563,462 0.4% 20,562,305 0.3% -0.0%
deopt

Specialized instructions that deopt.

13,123 0.0% 13,123 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 668,431 100.0% 668,123 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
deferred

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

11,855 0.0% 11,848 0.0% -0.1%
hit

Specialized instructions that complete.

134,422,683 100.0% 134,389,807 100.0% -0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 11,718 100.0% 11,717 100.0% -0.0%
Failure 0 0.0% 0 0.0%

POP_JUMP_IF_FALSE

specialization stats for POP_JUMP_IF_FALSE family

POP_JUMP_IF_NONE

specialization stats for POP_JUMP_IF_NONE family

POP_JUMP_IF_NOT_NONE

specialization stats for POP_JUMP_IF_NOT_NONE family

POP_JUMP_IF_TRUE

specialization stats for POP_JUMP_IF_TRUE family

SEND

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

Specialized instructions that complete.

787,086,818 81.9% 787,084,818 81.9% -0.0%
deferred

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

173,802,667 18.1% 173,802,608 18.1% -0.0%
miss

Specialized instructions that deopt.

30,900 0.0% 30,900 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 61,749 89.6% 61,752 89.6% 0.0%
Success 7,152 10.4% 7,152 10.4% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 16,129 26.1% 16,132 26.1% 0.0%
async generator send 33,180 53.7% 33,180 53.7% 0.0%
list 9,980 16.2% 9,980 16.2% 0.0%
tuple 2,220 3.6% 2,220 3.6% 0.0%
dict keys 240 0.4% 240 0.4% 0.0%

STORE_ATTR

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

Specialized instructions that deopt.

165,625,661 6.0% 160,646,573 6.0% -3.0%
hit

Specialized instructions that complete.

2,523,552,869 91.4% 2,458,650,388 91.4% -2.6%
deferred

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

233,244,086 8.5% 228,277,247 8.5% -2.1%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 3,274,011 95.7% 3,180,122 95.6% -2.9%
Failure 145,988 4.3% 145,921 4.4% -0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
out of versions 573 0.4% 594 0.4% 3.7%
not in keys 7,781 5.3% 7,761 5.3% -0.3%
class attr simple 48,279 33.1% 48,219 33.0% -0.1%
not managed dict 28,518 19.5% 28,510 19.5% -0.0%
not in dict 15,645 10.7% 15,645 10.7% 0.0%
non string or split 15,440 10.6% 15,440 10.6% 0.0%
overriding descriptor 10,660 7.3% 10,660 7.3% 0.0%
overridden 6,932 4.7% 6,932 4.8% 0.0%
property 5,440 3.7% 5,440 3.7% 0.0%
no dict 5,180 3.5% 5,180 3.5% 0.0%
method 1,500 1.0% 1,500 1.0% 0.0%
mutable class 40 0.0% 40 0.0% 0.0%

STORE_SLICE

specialization stats for STORE_SLICE family

STORE_SUBSCR

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

Specialized instructions that complete.

245,122,045 77.9% 242,033,498 77.6% -1.3%
deferred

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

69,597,071 22.1% 69,959,658 22.4% 0.5%
miss

Specialized instructions that deopt.

2,900 0.0% 2,900 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 66,345 78.0% 67,008 78.2% 1.0%
Success 18,717 22.0% 18,709 21.8% -0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
dict subclass no override 11,838 17.8% 12,528 18.7% 5.8%
bytearray int 1,340 2.0% 1,400 2.1% 4.5%
array int 6,560 9.9% 6,480 9.7% -1.2%
out of range 2,028 3.1% 2,006 3.0% -1.1%
py simple 42,499 64.1% 42,514 63.4% 0.0%
other 2,080 3.1% 2,080 3.1% 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.

3,381,823,980 91.0% 3,549,031,429 91.5% 4.9%
deferred

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

331,544,475 8.9% 326,891,261 8.4% -1.4%
miss

Specialized instructions that deopt.

102,057,886 2.7% 101,415,739 2.6% -0.6%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 2,210,153 78.9% 2,197,847 78.9% -0.6%
Failure 589,422 21.1% 588,038 21.1% -0.2%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 173,065 29.4% 171,191 29.1% -1.1%
dict 30,974 5.3% 30,651 5.2% -1.0%
set 40,256 6.8% 40,469 6.9% 0.5%
mapping 57,846 9.8% 58,032 9.9% 0.3%
tuple 95,114 16.1% 95,418 16.2% 0.3%
sequence 17,242 2.9% 17,197 2.9% -0.3%
number 152,245 25.8% 152,413 25.9% 0.1%
bytes 18,699 3.2% 18,687 3.2% -0.1%
float 2,321 0.4% 2,320 0.4% -0.0%
bytearray 1,240 0.2% 1,240 0.2% 0.0%
memory view 420 0.1% 420 0.1% 0.0%

UNPACK_SEQUENCE

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

Specialized instructions that deopt.

1,060 0.0% 3,160 0.0% 198.1%
hit

Specialized instructions that complete.

460,671,522 99.9% 582,564,781 99.9% 26.5%
deferred

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

487,240 0.1% 500,400 0.1% 2.7%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 3,559 8.2% 3,577 8.2% 0.5%
Success 39,885 91.8% 39,857 91.8% -0.1%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
sequence 2,498 70.2% 2,516 70.3% 0.7%
iterator 681 19.1% 681 19.0% 0.0%
other 380 10.7% 380 10.6% 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 misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

1,033,830,254 0.9% 978,600,154 0.8% -5.3%
Specialized hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

40,520,798,804 34.6% 41,679,959,845 35.0% 2.9%
Basic

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

64,246,803,202 54.9% 65,194,961,846 54.7% 1.5%
Not specialized

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

11,198,890,961 9.6% 11,342,312,495 9.5% 1.3%

Deferred by instruction

Breakdown of deferred (not specialized) instruction counts by family
Name Base Count Base Ratio Head Count Head Ratio Change
BINARY_SUBSCR 268,540,656 5.7% 329,294,716 7.1% 22.6%
CONTAINS_OP 104,334,443 2.2% 86,033,546 1.9% -17.5%
BINARY_OP 598,961,048 12.6% 500,018,158 10.8% -16.5%
FOR_ITER 118,900,180 2.5% 104,901,985 2.3% -11.8%
LOAD_ATTR 1,251,113,517 26.3% 1,195,563,300 25.9% -4.4%
COMPARE_OP 132,656,051 2.8% 138,038,672 3.0% 4.1%
STORE_ATTR 233,244,086 4.9% 228,277,247 4.9% -2.1%
TO_BOOL 331,544,475 7.0% 326,891,261 7.1% -1.4%
CALL 1,447,251,749 30.5% 1,446,715,956 31.3% -0.0%
SEND 173,802,667 3.7% 173,802,608 3.8% -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 134,088,685 13.0% 102,113,076 10.4% -23.8%
LOAD_ATTR_METHOD_WITH_VALUES 141,062,277 13.6% 125,541,985 12.8% -11.0%
STORE_ATTR_INSTANCE_VALUE 70,593,778 6.8% 65,633,541 6.7% -7.0%
LOAD_ATTR_SLOT 91,563,377 8.9% 89,027,071 9.1% -2.8%
CALL_METHOD_DESCRIPTOR_FAST 42,377,083 4.1% 42,155,711 4.3% -0.5%
TO_BOOL_ALWAYS_TRUE 46,277,952 4.5% 46,055,732 4.7% -0.5%
TO_BOOL_NONE 47,895,264 4.6% 47,676,453 4.9% -0.5%
CALL_PY_EXACT_ARGS 121,187,940 11.7% 121,070,405 12.4% -0.1%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 59,398,480 5.7% 59,350,778 6.1% -0.1%
STORE_ATTR_SLOT 94,979,035 9.2% 94,960,180 9.7% -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 (slot) 479,367,831 5.5% 476,589,902 5.5% -0.6%
Calls via PyEval_EvalFrame (function vectorcall) 1,450,623,703 16.7% 1,448,054,238 16.6% -0.2%
Calls via PyEval_EvalFrame (vector) 1,453,312,773 16.7% 1,450,743,308 16.7% -0.2%
Calls to PyEval_EvalDefault 2,315,819,709 26.6% 2,313,027,745 26.6% -0.1%
Calls via PyEval_EvalFrame (total) 2,315,819,709 26.6% 2,313,027,745 26.6% -0.1%
Calls via PyEval_EvalFrame (api) 260,349,622 3.0% 260,583,960 3.0% 0.1%
Calls to Python functions inlined 6,383,054,501 73.4% 6,385,321,489 73.4% 0.0%
Calls via PyEval_EvalFrame (generator) 862,506,936 9.9% 862,284,437 9.9% -0.0%
Frame objects created 89,136,144 1.0% 89,129,530 1.0% -0.0%
Frames pushed 6,953,899,388 79.9% 6,953,595,581 79.9% -0.0%
Calls via PyEval_EvalFrame (function ex) 38,363,942 0.4% 38,365,534 0.4% 0.0%
Calls via PyEval_EvalFrame (method) 213,147,689 2.5% 213,146,646 2.5% -0.0%
Calls via PyEval_EvalFrame (legacy) 2,658,324 0.0% 2,658,324 0.0% 0.0%
Calls via PyEval_EvalFrame (build class) 30,746 0.0% 30,746 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
Method cache dunder misses 11,379,543 10,427,242 -8.4%
Method cache collisions 82,020,930 76,950,714 -6.2%
Method cache misses 78,422,401 74,307,084 -5.2%
Increfs 27,330,270,170 22.6% 26,958,241,399 22.4% -1.4%
Interpreter decrefs 108,049,204,455 78.1% 107,775,489,290 78.1% -0.3%
Method cache hits 3,117,173,549 3,124,716,376 0.2%
Interpreter increfs 93,499,253,840 77.4% 93,585,718,597 77.6% 0.1%
Method cache dunder hits 3,564,283,563 3,562,262,775 -0.1%
Decrefs 30,220,971,580 21.9% 30,209,082,350 21.9% -0.0%
Allocations to 4 kbytes 104,922,463 0.6% 104,903,887 0.6% -0.0%
Inline values 182,584,015 182,576,430 -0.0%
Allocations 11,705,152,217 63.2% 11,704,809,855 63.2% -0.0%
Allocations to 512 bytes 11,579,061,580 62.6% 11,578,738,037 62.6% -0.0%
Frees 12,050,037,883 12,049,702,708 -0.0%
Frees to freelist 6,803,915,075 6,804,070,098 0.0%
Allocations from freelist 6,801,941,198 36.8% 6,802,077,167 36.8% 0.0%
Allocations over 4 kbytes 21,168,174 0.1% 21,167,931 0.1% -0.0%
Materialize dict (on request) 6,618,866 3.6% 6,618,866 3.6% 0.0%
Materialize dict (new key) 116,335 0.1% 116,335 0.1% 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 Head Collections Head Objects collected Head Object visits
0 0 0 0 0 0 0
1 0 115,716,237 17,100,240,259 0 115,761,631 17,050,539,955
2 0 10,755,840 6,969,903,930 0 10,755,840 6,971,425,880

Optimization (Tier 2) stats

statistics about the Tier 2 optimizer
Base Count Base Ratio Head Count Head Ratio Change
Trace stack underflow

A potential trace is abandoned because it pops more frames than it pushes.

176,430 24.7% 322,321 38.4% 82.7%
Inner loop found

A trace is truncated because it has an inner loop

35,230 4.9% 53,091 6.3% 50.7%
Recursive call

A trace is truncated because it has a recursive call.

2,674 0.4% 1,951 0.2% -27.0%
Trace too short

A potential trace is abandoced because it it too short.

560,865 78.6% 691,751 82.3% 23.3%
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.

713,970 840,159 17.7%
Trace stack overflow

A trace is truncated because it would require more than 5 stack frames.

1,362 0.2% 1,165 0.1% -14.5%
Low confidence

A trace is abandoned because the likelihood of the jump to top being taken is too low.

8,829 1.2% 8,210 1.0% -7.0%
Traces created

The number of traces that were successfully created.

153,105 21.4% 148,408 17.7% -3.1%
Executors invalidated

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

5,660 3.7% 5,520 3.7% -2.5%
Uops executed

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

196,164,310,397 2,618.8% 192,480,127,857 2,540.6% -1.9%
Traces executed

The number of traces that were executed

7,490,619,043 7,576,076,858 1.1%
Trace too long

A trace is truncated because it is longer than the instruction buffer.

0 0.0% 0 0.0%
Base Count Base Ratio Head Count Head Ratio Change
Optimizer successes

The number of traces that were successfully optimized.

150,925 98.6% 144,800 97.6% -4.1%
Optimizer attempts

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

153,105 148,408 -3.1%
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

2,120 1.4% 2,120 1.4% 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 10,035 6.6% 12,311 8.3% 22.7%
<= 16 24,722 16.1% 24,282 16.4% -1.8%
<= 32 57,193 37.4% 52,479 35.4% -8.2%
<= 64 33,800 22.1% 33,167 22.3% -1.9%
<= 128 19,398 12.7% 18,285 12.3% -5.7%
<= 256 6,590 4.3% 6,774 4.6% 2.8%
<= 512 1,367 0.9% 1,110 0.7% -18.8%

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 2,606 1.7% 5,105 3.4% 95.9%
<= 8 16,925 11.1% 19,699 13.3% 16.4%
<= 16 46,264 30.2% 41,017 27.6% -11.3%
<= 32 48,610 31.7% 43,695 29.4% -10.1%
<= 64 23,789 15.5% 23,142 15.6% -2.7%
<= 128 9,961 6.5% 9,568 6.4% -3.9%
<= 256 2,630 1.7% 2,434 1.6% -7.5%
<= 512 140 0.1% 140 0.1% 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%
<= 2 25,847,900 0.3% 26,058,980 0.3% 0.8%
<= 4 1,003,440,469 13.4% 574,384,881 7.6% -42.8%
<= 8 838,720,241 11.2% 881,036,706 11.6% 5.0%
<= 16 1,407,999,283 18.8% 1,409,577,432 18.6% 0.1%
<= 32 1,109,220,641 14.8% 1,228,990,291 16.2% 10.8%
<= 64 625,090,399 8.3% 678,837,458 9.0% 8.6%
<= 128 319,576,877 4.3% 285,453,398 3.8% -10.7%
<= 256 188,442,453 2.5% 166,398,596 2.2% -11.7%
<= 512 23,552,775 0.3% 20,337,407 0.3% -13.7%
<= 1,024 7,720,214 0.1% 7,692,265 0.1% -0.4%
<= 2,048 17,763,052 0.2% 17,762,089 0.2% -0.0%
<= 4,096 611,448 0.0% 611,411 0.0% -0.0%
<= 8,192 747,337 0.0% 747,421 0.0% 0.0%
<= 16,384 237,561 0.0% 237,561 0.0% 0.0%
<= 32,768 43,860 0.0% 43,860 0.0% 0.0%
<= 65,536 13,246 0.0% 13,266 0.0% 0.2%
<= 131,072 754 0.0% 734 0.0% -2.7%
<= 262,144 2,080 0.0% 2,081 0.0% 0.0%
<= 524,288 462 0.0% 464 0.0% 0.4%
<= 1,048,576 400 0.0% 400 0.0% 0.0%
<= 2,097,152 302 0.0% 305 0.0% 1.0%
<= 4,194,304 178 0.0% 175 0.0% -1.7%
<= 8,388,608 240 0.0% 240 0.0% 0.0%

Uop execution stats

uop execution stats
Name Base Count Head Count Change
_DELETE_SUBSCR 1,629,645 98,172,948 5,924.2%
_CALL_METHOD_DESCRIPTOR_O 26,486,020 129,202,764 387.8%
_ERROR_POP_N 698,627 1,879,206 169.0%
_POP_TOP_LOAD_CONST_INLINE_BORROW 1,404,746 2,882,377 105.2%
_BUILD_STRING 25,515,722 1,853,708 -92.7%
_CONVERT_VALUE 51,694,900 3,917,200 -92.4%
_FORMAT_SIMPLE 52,355,821 4,683,386 -91.1%
_BUILD_CONST_KEY_MAP 2,731,034 4,837,300 77.1%
_LOAD_FAST_CHECK 271,482 472,431 74.0%
_FOR_ITER_TIER_TWO 1,713,687,571 632,044,649 -63.1%
_STORE_ATTR_INSTANCE_VALUE 107,883,929 170,865,562 58.4%
_GUARD_DORV_NO_DICT 109,233,149 172,212,942 57.7%
_MAP_ADD 21,327,744 33,167,997 55.5%
_GUARD_IS_NONE_POP 46,920,922 72,596,258 54.7%
_LOAD_FAST_AND_CLEAR 17,241,896 25,069,055 45.4%
_ITER_CHECK_TUPLE 362,972,028 518,337,094 42.8%
_DEOPT 1,206,498,273 701,253,172 -41.9%
_GUARD_NOT_EXHAUSTED_TUPLE 310,723,263 438,578,389 41.1%
_POP_TOP 921,552,048 1,270,454,632 37.9%
_SET_ADD 2,174,708 1,449,209 -33.4%
_ITER_NEXT_TUPLE 204,701,448 265,662,113 29.8%
_TO_BOOL_STR 28,328,345 35,303,442 24.6%
_BUILD_TUPLE 458,412,474 561,260,970 22.4%
_DICT_MERGE 11,664,360 9,131,214 -21.7%
_COLD_EXIT 1,736,168,475 2,092,506,030 20.5%
_LOAD_GLOBAL 184,430,413 217,097,427 17.7%
_MAKE_CELL 6,868,580 5,676,439 -17.4%
_UNPACK_SEQUENCE_TUPLE 292,682,630 244,620,451 -16.4%
_INIT_CALL_PY_EXACT_ARGS_4 624,859,666 528,743,113 -15.4%
_CALL_TYPE_1 332,534,251 281,947,203 -15.2%
_STORE_DEREF 3,878,811 3,293,412 -15.1%
_BUILD_MAP 17,382,991 20,005,731 15.1%
_CONTAINS_OP 121,537,621 139,732,265 15.0%
_CALL_BUILTIN_CLASS 61,371,139 70,547,269 15.0%
_CHECK_VALIDITY_AND_SET_IP 1,204,216,927 1,364,355,486 13.3%
_LOAD_ATTR_METHOD_NO_DICT 890,347,174 997,010,577 12.0%
_LOAD_CONST_INLINE_BORROW_WITH_NULL 505,532,430 447,200,310 -11.5%
_INIT_CALL_PY_EXACT_ARGS_2 111,429,389 124,222,516 11.5%
_LOAD_DEREF 660,691,799 585,994,387 -11.3%
_BINARY_OP 897,013,453 995,790,954 11.0%
_LOAD_SUPER_ATTR_METHOD 179,122 198,576 10.9%
_STORE_FAST_3 789,513,251 704,731,814 -10.7%
_UNPACK_SEQUENCE_TWO_TUPLE 709,813,400 635,650,370 -10.4%
_STORE_FAST_5 794,904,184 713,558,220 -10.2%
_CALL_ISINSTANCE 393,886,655 353,897,522 -10.2%
_TO_BOOL_LIST 56,354,706 61,895,013 9.8%
_GET_ITER 353,635,432 388,173,609 9.8%
_LOAD_FAST_4 2,326,812,622 2,099,936,523 -9.8%
_LOAD_ATTR_SLOT_1 2,633,440 2,889,040 9.7%
_CALL_BUILTIN_FAST 1,026,661,654 928,169,796 -9.6%
_GUARD_NOT_EXHAUSTED_RANGE 690,660,237 756,069,034 9.5%
_ITER_CHECK_RANGE 691,197,557 756,606,354 9.5%
_ITER_NEXT_RANGE 648,020,137 708,493,900 9.3%
_LOAD_GLOBAL_MODULE 58,250,421 53,035,930 -9.0%
_TO_BOOL_BOOL 2,250,936,020 2,052,456,367 -8.8%
_LOAD_ATTR_METHOD_WITH_VALUES 1,183,580,122 1,084,422,360 -8.4%
_POP_FRAME 817,640,944 750,783,287 -8.2%
_SET_IP 15,025,157,536 13,797,410,122 -8.2%
_STORE_FAST_4 773,167,508 710,853,928 -8.1%
_CONTAINS_OP_DICT 430,474,904 395,802,463 -8.1%
_ITER_NEXT_LIST 1,138,037,399 1,229,195,767 8.0%
_LOAD_CONST_INLINE_WITH_NULL 2,044,738,105 1,881,684,186 -8.0%
_LOAD_FAST_5 2,442,996,138 2,251,466,057 -7.8%
_BINARY_SUBSCR_DICT 425,159,720 391,850,536 -7.8%
_CALL_TUPLE_1 7,492,460 8,077,187 7.8%
_GUARD_KEYS_VERSION 1,282,500,845 1,182,806,837 -7.8%
_GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 1,332,120,184 1,229,258,462 -7.7%
_GUARD_NOT_EXHAUSTED_LIST 1,409,307,992 1,516,854,237 7.6%
_GUARD_IS_NOT_NONE_POP 169,509,762 182,169,863 7.5%
_EXIT_TRACE 2,751,406,663 2,933,593,334 6.6%
_STORE_FAST 3,392,399,502 3,168,258,014 -6.6%
_CHECK_ATTR_METHOD_LAZY_DICT 105,936,148 99,492,825 -6.1%
_LOAD_ATTR_METHOD_LAZY_DICT 105,936,148 99,492,825 -6.1%
_ITER_CHECK_LIST 1,487,490,174 1,574,078,946 5.8%
_STORE_FAST_2 894,075,757 842,573,153 -5.8%
_SWAP 1,157,627,317 1,222,467,405 5.6%
_LOAD_ATTR_INSTANCE_VALUE_1 4,491,579 4,742,001 5.6%
_TO_BOOL 250,017,700 263,642,044 5.4%
_SIDE_EXIT 4,361,835,272 4,595,055,043 5.3%
_CHECK_VALIDITY 12,292,439,087 11,646,235,379 -5.3%
_STORE_ATTR_SLOT 123,910,785 130,303,683 5.2%
_BINARY_OP_ADD_UNICODE 25,542,734 26,846,119 5.1%
_LOAD_ATTR 1,272,208,592 1,336,815,432 5.1%
_LOAD_FAST_6 1,277,810,831 1,340,996,325 4.9%
_BINARY_SUBSCR 1,302,322,297 1,238,517,555 -4.9%
_COMPARE_OP 112,689,910 107,198,152 -4.9%
_STORE_FAST_1 2,017,329,070 1,920,662,015 -4.8%
_UNARY_NOT 62,242,739 65,220,510 4.8%
_CALL_LEN 215,922,722 226,133,110 4.7%
_START_EXECUTOR 5,754,450,568 5,483,570,828 -4.7%
_LOAD_CONST_INLINE 1,526,887,718 1,597,845,531 4.6%
_BINARY_SUBSCR_TUPLE_INT 163,912,061 156,630,235 -4.4%
_GUARD_TOS_INT 226,768,945 216,774,768 -4.4%
_GUARD_BOTH_FLOAT 916,378,215 876,074,529 -4.4%
_JUMP_TO_TOP 2,258,475,873 2,160,460,416 -4.3%
_RESUME_CHECK 1,570,653,117 1,505,003,231 -4.2%
_LOAD_FAST_3 3,578,537,936 3,431,635,309 -4.1%
_GUARD_IS_TRUE_POP 2,726,629,696 2,616,299,650 -4.0%
_CHECK_FUNCTION 1,336,627,464 1,389,729,504 4.0%
_GUARD_GLOBALS_VERSION 111,287,105 106,926,374 -3.9%
_BINARY_OP_MULTIPLY_FLOAT 1,156,319,872 1,112,485,765 -3.8%
_SAVE_RETURN_OFFSET 1,861,181,452 1,791,494,238 -3.7%
_LOAD_ATTR_NONDESCRIPTOR_NO_DICT 26,842,850 25,866,432 -3.6%
_CHECK_FUNCTION_EXACT_ARGS 1,938,188,366 1,867,994,094 -3.6%
_PUSH_FRAME 1,968,110,195 1,898,422,810 -3.5%
_STORE_SLICE 149,868,340 154,965,460 3.4%
_TO_BOOL_INT 211,819,967 218,926,392 3.4%
_LOAD_FAST_7 3,403,026,482 3,515,932,445 3.3%
_CALL_METHOD_DESCRIPTOR_FAST 257,435,425 265,842,026 3.3%
_LIST_APPEND 203,935,784 197,362,232 -3.2%
_STORE_FAST_6 551,771,484 534,735,360 -3.1%
_CHECK_MANAGED_OBJECT_HAS_VALUES 2,076,722,387 2,139,565,267 3.0%
_LOAD_ATTR_INSTANCE_VALUE_0 2,071,746,168 2,134,428,246 3.0%
_GUARD_BOTH_INT 632,018,071 613,076,930 -3.0%
_CALL_METHOD_DESCRIPTOR_NOARGS 202,360,745 208,260,087 2.9%
_STORE_SUBSCR_DICT 145,710,159 149,843,383 2.8%
_GUARD_IS_FALSE_POP 5,682,504,863 5,527,731,407 -2.7%
_CHECK_STACK_SPACE 204,851,110 199,692,966 -2.5%
_CHECK_ATTR_WITH_HINT 235,751,587 230,607,749 -2.2%
_LOAD_ATTR_WITH_HINT 235,571,326 230,440,828 -2.2%
_PUSH_NULL 859,534,481 841,702,155 -2.1%
_CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 159,855,766 156,813,210 -1.9%
_INIT_CALL_PY_EXACT_ARGS 10,099,167 9,917,903 -1.8%
_INIT_CALL_PY_EXACT_ARGS_1 628,264,423 639,167,037 1.7%
_STORE_FAST_0 209,073,552 205,466,825 -1.7%
_INIT_CALL_PY_EXACT_ARGS_3 61,665,724 62,718,478 1.7%
_TIER2_RESUME_CHECK 249,219,717 253,404,181 1.7%
_LOAD_GLOBAL_BUILTINS 53,036,684 53,890,444 1.6%
_CONTAINS_OP_SET 1,598,619,907 1,573,176,643 -1.6%
_LOAD_FAST 6,035,374,704 6,123,700,208 1.5%
_GUARD_TYPE_VERSION 6,250,116,075 6,339,744,595 1.4%
_CALL_INTRINSIC_1 98,948,319 97,594,619 -1.4%
_LOAD_ATTR_CLASS_0 24,915,216 25,255,397 1.4%
_LIST_EXTEND 99,872,119 98,553,259 -1.3%
_COMPARE_OP_INT 1,017,012,974 1,029,652,880 1.2%
_CHECK_ATTR_CLASS 47,539,242 48,106,738 1.2%
_IS_OP 363,109,893 358,812,779 -1.2%
_STORE_GLOBAL 1,275,340 1,260,560 -1.2%
_LOAD_FAST_1 6,835,782,429 6,760,334,900 -1.1%
_LOAD_CONST_INLINE_BORROW 9,580,449,638 9,484,103,002 -1.0%
_GUARD_TOS_FLOAT 65,543,560 64,886,420 -1.0%
_GUARD_NOS_INT 2,428,806,967 2,450,126,764 0.9%
_CALL_BUILTIN_O 748,424,032 742,031,246 -0.9%
_REPLACE_WITH_TRUE 33,298,851 33,566,810 0.8%
_STORE_ATTR 58,799,445 59,269,457 0.8%
_CHECK_CALL_BOUND_METHOD_EXACT_ARGS 80,146,413 80,777,072 0.8%
_CHECK_ATTR_MODULE 7,601,010 7,542,108 -0.8%
_LOAD_ATTR_MODULE 7,601,010 7,542,108 -0.8%
_CHECK_PERIODIC 2,616,871,567 2,637,017,069 0.8%
_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 92,256,199 92,957,829 0.8%
_UNPACK_SEQUENCE 1,566,268 1,554,914 -0.7%
_BUILD_LIST 260,972,178 262,762,984 0.7%
_STORE_FAST_7 1,223,210,687 1,214,962,327 -0.7%
_BINARY_SLICE 122,812,761 122,040,546 -0.6%
_BINARY_OP_SUBTRACT_INT 464,143,424 461,493,475 -0.6%
_INIT_CALL_BOUND_METHOD_EXACT_ARGS 80,079,413 80,532,952 0.6%
_CHECK_STACK_SPACE_OPERAND 967,371,605 972,033,169 0.5%
_LOAD_FAST_0 6,023,113,325 6,051,023,057 0.5%
_INIT_CALL_PY_EXACT_ARGS_0 424,863,083 426,725,191 0.4%
_UNARY_NEGATIVE 25,164,774 25,062,818 -0.4%
_GUARD_BOTH_UNICODE 978,992,454 975,232,194 -0.4%
_LOAD_ATTR_SLOT_0 745,175,886 747,927,634 0.4%
_BINARY_OP_ADD_FLOAT 554,586,180 556,453,880 0.3%
_TO_BOOL_NONE 180,543,155 181,141,367 0.3%
_BINARY_SUBSCR_LIST_INT 1,103,675,998 1,107,225,336 0.3%
_COPY 1,333,131,499 1,328,861,898 -0.3%
_LOAD_FAST_2 3,182,707,165 3,172,621,804 -0.3%
_RETURN_GENERATOR 91,061,914 91,340,939 0.3%
_COMPARE_OP_STR 1,837,494,440 1,832,167,913 -0.3%
_COPY_FREE_VARS 81,379,946 81,177,795 -0.2%
_STORE_SUBSCR_LIST_INT 490,870,022 489,812,942 -0.2%
_BINARY_OP_MULTIPLY_INT 185,794,604 186,148,084 0.2%
_CALL_STR_1 67,905,056 67,798,674 -0.2%
_UNARY_INVERT 12,990,812 12,971,658 -0.1%
_SET_FUNCTION_ATTRIBUTE 78,474,688 78,588,666 0.1%
_MAKE_FUNCTION 93,509,902 93,610,627 0.1%
_STORE_SUBSCR 381,433,900 381,071,318 -0.1%
_GUARD_BUILTINS_VERSION 45,866,884 45,823,824 -0.1%
_LOAD_ATTR_CLASS_1 20,485,700 20,502,900 0.1%
_BINARY_OP_ADD_INT 2,521,904,335 2,519,803,460 -0.1%
_UNPACK_SEQUENCE_LIST 81,626,769 81,592,260 -0.0%
_BINARY_SUBSCR_STR_INT 1,216,990,883 1,216,602,013 -0.0%
_CALL_BUILTIN_FAST_WITH_KEYWORDS 91,072,135 91,096,605 0.0%
_DYNAMIC_EXIT 185,418,396 185,383,407 -0.0%
_BUILD_SLICE 139,781,460 139,805,248 0.0%
_COMPARE_OP_FLOAT 101,252,850 101,264,171 0.0%
_GET_YIELD_FROM_ITER 916,047 916,129 0.0%
_GUARD_NOS_FLOAT 613,674,313 613,722,987 0.0%
_BINARY_OP_SUBTRACT_FLOAT 383,046,880 383,035,460 -0.0%
_GET_AWAITABLE 653,796 653,798 0.0%
_FOR_ITER_GEN_FRAME 107,033,363 107,033,192 -0.0%
_GET_ANEXT 125,514,720 125,514,720 0.0%
_STORE_NAME 545,860 545,860 0.0%
_POP_EXCEPT 7,620 7,620 0.0%
_UNPACK_EX 104 104 0.0%
_DELETE_ATTR 2,009,931

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
SEND_GEN 260 1,400 438.5%
BUILD_SET 525 1,318 151.0%
CALL_FUNCTION_EX 6,061 11,215 85.0%
IMPORT_NAME 731 1,028 40.6%
BINARY_OP_INPLACE_ADD_UNICODE 703 603 -14.2%
YIELD_VALUE 140,949 121,092 -14.1%
CALL_LIST_APPEND 8,041 6,974 -13.3%
CALL_ALLOC_AND_ENTER_INIT 1,911 1,672 -12.5%
CALL_PY_WITH_DEFAULTS 11,800 10,425 -11.7%
BINARY_SUBSCR_GETITEM 3,280 2,940 -10.4%
CALL_KW 30,710 32,888 7.1%
CALL 184,032 171,941 -6.6%
LOAD_ATTR_PROPERTY 8,210 7,808 -4.9%
SEND 32,412 32,414 0.0%
LOAD_NAME 1,360 1,360 0.0%
BEFORE_WITH 400 400 0.0%
STORE_ATTR_WITH_HINT 300 300 0.0%
RAISE_VARARGS 160

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

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

461 461 0.0%
watched dict modification

A watched dict has been modified

1,120 1,120 0.0%
watched globals modification

A watched globals() dict has been modified

1,120 1,120 0.0%

Meta stats

Meta statistics
Base Count Head Count Change
Number of data files 2,000 2,000 0.0%

Stats gathered on: 2024-04-30