Skip to content

Latest commit

 

History

History
5144 lines (4848 loc) · 106 KB

bm-20250206-azure-x86_64-brandtbucher-justin_compact_exits-3.14.0a4+-aa6e11c-pystats-concurrent_imap-vs-base.md

File metadata and controls

5144 lines (4848 loc) · 106 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
BINARY_OP_SUBTRACT_FLOAT 540,662 604,932 11.9%
TO_BOOL_LIST 1,102,314 1,230,837 11.7%
CONTAINS_OP_DICT 1,111,367 1,240,460 11.6%
LOAD_SUPER_ATTR_METHOD 1,499,521 1,672,675 11.5%
LIST_EXTEND 371,394 414,228 11.5%
COMPARE_OP 754,648 841,024 11.4%
CALL_ISINSTANCE 769,954 857,438 11.4%
COPY_FREE_VARS 1,527,770 1,700,924 11.3%
LOAD_DEREF 1,565,591 1,738,745 11.1%
TO_BOOL_INT 3,876,865 4,304,345 11.0%
IMPORT_FROM 394,205 437,058 10.9%
LOAD_FAST_AND_CLEAR 591,114 655,331 10.9%
IMPORT_NAME 394,528 437,381 10.9%
BINARY_OP_ADD_FLOAT 198,138 219,435 10.7%
BINARY_OP_EXTEND 5,190,895 5,740,534 10.6%
CALL_METHOD_DESCRIPTOR_FAST 1,418,117 1,565,254 10.4%
LIST_APPEND 622,091 686,335 10.3%
BUILD_MAP 850,897 936,567 10.1%
BUILD_LIST 1,449,009 1,594,735 10.1%
CALL_KW_PY 215,959 237,376 9.9%
UNARY_NOT 219,003 240,402 9.8%
CALL_BOUND_METHOD_GENERAL 221,837 243,246 9.7%
JUMP_FORWARD 1,286,740 1,410,912 9.7%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 1,311,179 1,434,573 9.4%
CALL_NON_PY_GENERAL 6,385,317 6,982,896 9.4%
GET_ITER 1,979,169 2,162,909 9.3%
POP_JUMP_IF_NOT_NONE 2,704,886 2,954,744 9.2%
LOAD_GLOBAL_MODULE 12,521,356 13,673,710 9.2%
STORE_ATTR_INSTANCE_VALUE 4,547,045 4,951,497 8.9%
UNARY_INVERT 936,209 1,017,969 8.7%
LOAD_ATTR_MODULE 2,217,390 2,409,979 8.7%
LOAD_FAST_LOAD_FAST 9,353,925 10,161,867 8.6%
CALL_PY_EXACT_ARGS 8,964,975 9,705,238 8.3%
LOAD_ATTR 7,494,429 8,109,367 8.2%
STORE_SUBSCR_DICT 1,584,343 1,714,266 8.2%
POP_JUMP_IF_FALSE 11,443,880 12,369,377 8.1%
LOAD_SMALL_INT 3,396,034 3,669,374 8.0%
LOAD_ATTR_METHOD_WITH_VALUES 5,601,632 6,049,739 8.0%
FOR_ITER_LIST 1,780,316 1,919,858 7.8%
JUMP_BACKWARD 103 111 7.8%
POP_JUMP_IF_TRUE 2,123,569 2,286,026 7.7%
LOAD_GLOBAL_BUILTIN 5,226,132 5,620,655 7.5%
SWAP 5,069,559 5,444,348 7.4%
LOAD_FAST 65,802,830 70,524,326 7.2%
RETURN_VALUE 24,827,888 26,560,879 7.0%
CALL_PY_GENERAL 3,150,254 3,362,932 6.8%
LOAD_FAST_CHECK 975,492 1,039,754 6.6%
LOAD_SPECIAL 2,673,892 2,845,216 6.4%
POP_TOP 13,525,068 14,377,888 6.3%
LOAD_CONST_MORTAL 1,019,246 1,083,510 6.3%
BUILD_TUPLE 2,338,812 2,485,884 6.3%
LOAD_ATTR_METHOD_NO_DICT 3,268,271 3,473,608 6.3%
TO_BOOL_BOOL 3,561,563 3,783,818 6.2%
RESUME_CHECK 21,659,383 23,006,136 6.2%
RESUME 476 505 6.1%
LOAD_CONST_IMMORTAL 14,741,543 15,556,958 5.5%
NOP 4,827,548 5,084,008 5.3%
BINARY_SUBSCR_LIST_INT 98,108 92,909 -5.3%
LOAD_ATTR_INSTANCE_VALUE 13,326,086 14,020,432 5.2%
COMPARE_OP_INT 2,393,593 2,517,632 5.2%
STORE_FAST 19,636,617 20,639,556 5.1%
COPY 6,786,798 7,124,944 5.0%
CALL_METHOD_DESCRIPTOR_NOARGS 1,263,981 1,325,778 4.9%
LOAD_ATTR_PROPERTY 347,531 363,355 4.6%
INTERPRETER_EXIT 8,446,535 8,810,660 4.3%
ENTER_EXECUTOR 8,694,388 9,042,033 4.0%
FOR_ITER_RANGE 156,318 150,704 -3.6%
CALL_BUILTIN_CLASS 1,027,251 1,057,472 2.9%
CALL_BUILTIN_FAST 617,304 635,402 2.9%
CALL_LIST_APPEND 103,370 100,506 -2.8%
UNPACK_SEQUENCE_TWO_TUPLE 743,357 761,897 2.5%
LOAD_CONST 1,613 1,651 2.4%
CALL_LEN 218,698 213,885 -2.2%
PUSH_NULL 5,045,797 5,147,992 2.0%
TO_BOOL 186,031 182,378 -2.0%
CALL 4,536 4,610 1.6%
JUMP_BACKWARD_JIT 761,242 750,191 -1.5%
STORE_FAST_STORE_FAST 1,620,644 1,639,184 1.1%
COMPARE_OP_STR 559,166 554,361 -0.9%
POP_JUMP_IF_NONE 382,120 379,470 -0.7%
TO_BOOL_ALWAYS_TRUE 345 347 0.6%
LOAD_GLOBAL 3,226 3,243 0.5%
JUMP_BACKWARD_NO_INTERRUPT 4,864 4,878 0.3%
POP_ITER 848,014 846,809 -0.1%
CHECK_EXC_MATCH 13,261 13,275 0.1%
POP_EXCEPT 17,484 17,498 0.1%
PUSH_EXC_INFO 17,484 17,498 0.1%
LOAD_ATTR_METHOD_LAZY_DICT 97,273 97,205 -0.1%
BINARY_SUBSCR 40,643 40,661 0.0%
UNPACK_SEQUENCE_TUPLE 46,396 46,379 -0.0%
IS_OP 34,046 34,053 0.0%
BINARY_OP_SUBTRACT_INT 102,138 102,118 -0.0%
CALL_METHOD_DESCRIPTOR_O 200,727 200,689 -0.0%
CALL_BOUND_METHOD_EXACT_ARGS 35,134 35,129 -0.0%
BINARY_OP 68,019 68,028 0.0%
STORE_SUBSCR 21,466 21,468 0.0%
NOT_TAKEN 16,600 16,601 0.0%
BINARY_OP_ADD_INT 452,914 452,888 -0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS 928,748 928,695 -0.0%
STORE_FAST_LOAD_FAST 168,823 168,814 -0.0%
TO_BOOL_NONE 191,018 191,025 0.0%
FOR_ITER 115,815 115,812 -0.0%
STORE_ATTR 81,656 81,658 0.0%
CALL_FUNCTION_EX 1,818,668 1,818,660 -0.0%
YIELD_VALUE 5,068,282 5,068,282 0.0%
MAKE_CELL 105,142 105,142 0.0%
STORE_DEREF 105,110 105,110 0.0%
FOR_ITER_GEN 87,032 87,032 0.0%
CALL_BUILTIN_O 86,432 86,432 0.0%
BINARY_SUBSCR_DICT 84,725 84,725 0.0%
CALL_KW_NON_PY 77,368 77,368 0.0%
BINARY_OP_MULTIPLY_FLOAT 68,756 68,756 0.0%
BINARY_SUBSCR_STR_INT 68,756 68,756 0.0%
DELETE_SUBSCR 67,589 67,589 0.0%
DELETE_ATTR 63,345 63,345 0.0%
DICT_MERGE 59,119 59,119 0.0%
CALL_ALLOC_AND_ENTER_INIT 55,866 55,866 0.0%
EXIT_INIT_CHECK 55,862 55,862 0.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 51,440 51,440 0.0%
BINARY_SUBSCR_TUPLE_INT 44,014 44,014 0.0%
MAKE_FUNCTION 42,904 42,904 0.0%
LOAD_ATTR_CLASS 38,452 38,452 0.0%
FORMAT_SIMPLE 38,409 38,409 0.0%
BUILD_STRING 29,697 29,697 0.0%
SET_FUNCTION_ATTRIBUTE 29,559 29,559 0.0%
LOAD_SUPER_ATTR_ATTR 23,800 23,800 0.0%
TO_BOOL_STR 21,938 21,938 0.0%
BINARY_OP_INPLACE_ADD_UNICODE 20,988 20,988 0.0%
FOR_ITER_TUPLE 17,858 17,858 0.0%
CONVERT_VALUE 17,404 17,404 0.0%
CALL_TUPLE_1 14,867 14,867 0.0%
BINARY_SLICE 14,143 14,143 0.0%
RETURN_GENERATOR 12,839 12,839 0.0%
RERAISE 12,672 12,672 0.0%
LOAD_ATTR_SLOT 10,286 10,286 0.0%
STORE_ATTR_SLOT 9,870 9,870 0.0%
CALL_STR_1 8,491 8,491 0.0%
END_FOR 8,446 8,446 0.0%
RAISE_VARARGS 4,227 4,227 0.0%
WITH_EXCEPT_START 4,223 4,223 0.0%
STORE_NAME 806 806 0.0%
JUMP_BACKWARD_NO_JIT 543 543 0.0%
BINARY_OP_ADD_UNICODE 522 522 0.0%
CONTAINS_OP_SET 415 415 0.0%
CONTAINS_OP 322 322 0.0%
LOAD_NAME 267 267 0.0%
CALL_KW 183 183 0.0%
CALL_TYPE_1 154 154 0.0%
UNPACK_SEQUENCE 149 149 0.0%
EXTENDED_ARG 129 129 0.0%
DELETE_FAST 128 128 0.0%
LOAD_SUPER_ATTR 68 68 0.0%
LOAD_BUILD_CLASS 42 42 0.0%
LOAD_LOCALS 38 38 0.0%
COMPARE_OP_FLOAT 29 29 0.0%
CALL_INTRINSIC_1 16 16 0.0%
LOAD_ATTR_CLASS_WITH_METACLASS_CHECK 12 12 0.0%
DELETE_NAME 6 6 0.0%
STORE_GLOBAL 4 4 0.0%
BINARY_SUBSCR_GETITEM 3 3 0.0%
BUILD_SET 2 2 0.0%
MAP_ADD 1 1 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
hit

Specialized instructions that complete.

9,272,976 99.1% 10,237,648 99.2% 10.4%
miss

Specialized instructions that deopt.

19,075 0.2% 18,160 0.2% -4.8%
deferred

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

67,332 0.7% 67,340 0.7% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 506 48.1% 489 47.2% -3.4%
Failure 547 51.9% 547 52.8% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
remainder 292 53.4% 292 53.4% 0.0%
add different types 187 34.2% 187 34.2% 0.0%
add other 66 12.1% 66 12.1% 0.0%
and int 2 0.4% 2 0.4% 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.

14,143 100.0% 14,143 100.0% 0.0%

BINARY_SUBSCR

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

Specialized instructions that complete.

578,088 93.4% 620,922 93.9% 7.4%
deferred

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

40,381 6.5% 40,395 6.1% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 144 55.0% 148 55.6% 2.8%
Success 118 45.0% 118 44.4% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
buffer int 143 99.3% 147 99.3% 2.8%
list slice 1 0.7% 1 0.7% 0.0%

CALL

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

Specialized instructions that complete.

23,383,421 100.0% 25,353,591 100.0% 8.4%
deferred

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

1,996 0.0% 2,056 0.0% 3.0%
miss

Specialized instructions that deopt.

796 0.0% 796 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 3,336 100.0% 3,350 100.0% 0.4%
Failure 0 0.0% 0 0.0%

CALL_KW

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

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

43 23.5% 43 23.5% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 140 100.0% 140 100.0% 0.0%
Failure 0 0.0% 0 0.0%

COMPARE_OP

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

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

753,390 14.9% 839,761 15.6% 11.5%
hit

Specialized instructions that complete.

4,268,651 84.7% 4,525,584 84.0% 6.0%
miss

Specialized instructions that deopt.

18,639 0.4% 17,967 0.3% -3.6%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 608 38.0% 593 37.2% -2.5%
Failure 994 62.0% 1,000 62.8% 0.6%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
float long 702 70.6% 708 70.8% 0.9%
different types 151 15.2% 151 15.1% 0.0%
big int 96 9.7% 96 9.6% 0.0%
bytes 44 4.4% 44 4.4% 0.0%
list 1 0.1% 1 0.1% 0.0%

CONTAINS_OP

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

Specialized instructions that complete.

1,693,687 100.0% 1,843,623 100.0% 8.9%
deferred

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

270 0.0% 270 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 9 17.3% 9 17.3% 0.0%
Failure 43 82.7% 43 82.7% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
tuple 43 100.0% 43 100.0% 0.0%

FOR_ITER

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

Specialized instructions that complete.

6,608,234 98.3% 6,742,162 98.3% 2.0%
deferred

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

115,488 1.7% 115,483 1.7% -0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 51 15.6% 53 16.1% 3.9%
Failure 276 84.4% 276 83.9% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
itertools 77 27.9% 77 27.9% 0.0%
callable 70 25.4% 70 25.4% 0.0%
other 58 21.0% 58 21.0% 0.0%
enumerate 58 21.0% 58 21.0% 0.0%
dict items 7 2.5% 7 2.5% 0.0%
dict values 3 1.1% 3 1.1% 0.0%
set 2 0.7% 2 0.7% 0.0%
reversed list 1 0.4% 1 0.4% 0.0%

LOAD_ATTR

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

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

7,483,326 16.1% 8,098,075 16.2% 8.2%
hit

Specialized instructions that complete.

38,586,891 83.0% 41,391,486 83.0% 7.3%
miss

Specialized instructions that deopt.

383,476 0.8% 382,689 0.8% -0.2%
deopt

Specialized instructions that deopt.

6 0.0% 6 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 6,624 36.7% 6,795 37.3% 2.6%
Success 11,410 63.3% 11,426 62.7% 0.1%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
overriding descriptor 1,614 24.4% 1,715 25.2% 6.3%
non overriding descriptor 818 12.3% 836 12.3% 2.2%
overridden 681 10.3% 683 10.1% 0.3%
method 1,432 21.6% 1,432 21.1% 0.0%
non object slot 460 6.9% 460 6.8% 0.0%
mutable class 71 1.1% 71 1.0% 0.0%
class method obj 68 1.0% 68 1.0% 0.0%
not managed dict 45 0.7% 45 0.7% 0.0%
metaclass attribute 23 0.3% 23 0.3% 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.

17,747,245 100.0% 19,294,122 100.0% 8.7%
deferred

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

847 0.0% 865 0.0% 2.1%
deopt

Specialized instructions that deopt.

9 0.0% 9 0.0% 0.0%
miss

Specialized instructions that deopt.

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

2,046,633 100.0% 2,282,239 100.0% 11.5%
deferred

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

13 0.0% 13 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 55 100.0% 55 100.0% 0.0%
Failure 0 0.0% 0 0.0%

STORE_ATTR

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

Specialized instructions that complete.

4,894,365 95.7% 5,322,714 96.0% 8.8%
deferred

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

79,936 1.6% 79,937 1.4% 0.0%
miss

Specialized instructions that deopt.

140,400 2.7% 140,400 2.5% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 3,613 82.9% 3,614 82.9% 0.0%
Failure 743 17.1% 743 17.1% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 716 96.4% 742 99.9% 3.6%
property 344 46.3% 344 46.3% 0.0%
class attr simple 206 27.7% 206 27.7% 0.0%
split dict 44 5.9% 44 5.9% 0.0%
not in keys 10 1.3% 10 1.3% 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.

1,758,779 98.8% 1,909,520 98.9% 8.6%
deferred

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

21,263 1.2% 21,264 1.1% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 16 7.9% 17 8.3% 6.2%
Failure 187 92.1% 187 91.7% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
py simple 119 63.6% 119 63.6% 0.0%
other 68 36.4% 68 36.4% 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.

11,430,907 98.4% 12,607,288 98.6% 10.3%
deferred

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

184,811 1.6% 181,164 1.4% -2.0%
miss

Specialized instructions that deopt.

28 0.0% 28 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Failure 764 62.6% 757 62.4% -0.9%
Success 456 37.4% 457 37.6% 0.2%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
sequence 148 19.4% 140 18.5% -5.4%
mapping 312 40.8% 313 41.3% 0.3%
tuple 126 16.5% 126 16.6% 0.0%
other 111 14.5% 111 14.7% 0.0%
memory view 44 5.8% 44 5.8% 0.0%
bytes 22 2.9% 22 2.9% 0.0%
set 1 0.1% 1 0.1% 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.

2,112,743 100.0% 2,155,526 100.0% 2.0%
deferred

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

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

8,785,334 2.4% 9,483,114 2.4% 7.9%
Specialized hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

137,586,171 37.4% 147,477,238 37.6% 7.2%
Basic

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

220,531,706 60.0% 234,687,647 59.8% 6.4%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

562,718 0.2% 560,283 0.1% -0.4%

Deferred by instruction

Breakdown of deferred (not specialized) instruction counts by family
Name Base Count Base Ratio Head Count Head Ratio Change
COMPARE_OP 753,390 8.6% 839,761 8.9% 11.5%
LOAD_ATTR 7,483,326 85.4% 8,098,075 85.6% 8.2%
CALL 1,996 0.0% 2,056 0.0% 3.0%
TO_BOOL 184,811 2.1% 181,164 1.9% -2.0%
BINARY_SUBSCR 40,381 0.5% 40,395 0.4% 0.0%
BINARY_OP 67,332 0.8% 67,340 0.7% 0.0%
STORE_SUBSCR 21,263 0.2% 21,264 0.2% 0.0%
FOR_ITER 115,488 1.3% 115,483 1.2% -0.0%
STORE_ATTR 79,936 0.9% 79,937 0.8% 0.0%
BINARY_SLICE 14,143 0.2% 14,143 0.1% 0.0%

Misses by instruction

Breakdown of misses (specialized deopts) instruction counts by family
Name Base Count Base Ratio Head Count Head Ratio Change
BINARY_OP_ADD_FLOAT 9,385 1.7% 8,880 1.6% -5.4%
BINARY_OP_EXTEND 9,690 1.7% 9,280 1.7% -4.2%
COMPARE_OP_INT 18,638 3.3% 17,966 3.2% -3.6%
LOAD_ATTR_INSTANCE_VALUE 314,056 55.8% 313,266 55.9% -0.3%
LOAD_ATTR_METHOD_WITH_VALUES 59,388 10.6% 59,391 10.6% 0.0%
STORE_ATTR_INSTANCE_VALUE 140,400 24.9% 140,400 25.1% 0.0%
LOAD_ATTR_PROPERTY 9,895 1.8% 9,895 1.8% 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 398 0.1% 398 0.1% 0.0%
CALL_METHOD_DESCRIPTOR_O 275 0.0% 275 0.0% 0.0%
LOAD_GLOBAL_BUILTIN 149 0.0% 149 0.0% 0.0%

Call stats

Inlined calls and frame stats

This shows what fraction of calls to Python functions are inlined (i.e. not having a call at the C level) and for those that are not, where the call comes from. The various categories overlap.

Also includes the count of frame objects created.

Base Count Base Ratio Head Count Head Ratio Change
Calls via PyEval_EvalFrame (api) 501,751 1.6% 544,600 1.6% 8.5%
Frames pushed 26,666,242 84.1% 28,720,690 85.1% 7.7%
Calls to Python functions inlined 23,240,608 73.3% 24,930,931 73.9% 7.3%
Calls via PyEval_EvalFrame (function vectorcall) 8,023,455 25.3% 8,387,580 24.9% 4.5%
Calls via PyEval_EvalFrame (vector) 8,023,514 25.3% 8,387,639 24.9% 4.5%
Calls to PyEval_EvalDefault 8,450,893 26.7% 8,815,018 26.1% 4.3%
Calls via PyEval_EvalFrame (total) 8,450,893 26.7% 8,815,018 26.1% 4.3%
Frame objects created 17,499 0.1% 17,513 0.1% 0.1%
Calls via PyEval_EvalFrame (generator) 427,379 1.3% 427,379 1.3% 0.0%
Calls via PyEval_EvalFrame (legacy) 17 0.0% 17 0.0% 0.0%
Calls via PyEval_EvalFrame (build class) 42 0.0% 42 0.0% 0.0%
Calls via PyEval_EvalFrame (slot) 456,471 1.4% 456,471 1.4% 0.0%
Calls via PyEval_EvalFrame (function ex) 441,509 1.4% 441,509 1.3% 0.0%
Calls via PyEval_EvalFrame (method) 2 0.0% 2 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
Inline values 1,621,364 1,792,704 10.6%
Method cache dunder misses 34,774 31,184 -10.3%
Method cache hits 11,171,395 12,308,956 10.2%
Immortal increfs 60,944,403 15.4% 65,996,460 15.5% 8.3%
Interpreter immortal decrefs 75,550,330 15.7% 81,663,848 15.9% 8.1%
Interpreter immortal increfs 57,620,660 14.5% 62,126,428 14.6% 7.8%
Immortal decrefs 92,810,495 19.3% 99,867,335 19.4% 7.6%
Allocations from freelist 22,402,586 59.3% 24,072,157 59.7% 7.5%
Frees to freelist 22,404,293 24,073,945 7.5%
Interpreter mortal decrefs 185,250,636 38.6% 198,560,068 38.6% 7.2%
Method cache dunder hits 11,471,833 12,289,311 7.1%
Mortal increfs 134,472,002 33.9% 144,037,045 33.9% 7.1%
Interpreter mortal increfs 143,183,381 36.1% 152,715,093 35.9% 6.7%
Mortal decrefs 126,418,431 26.3% 134,431,711 26.1% 6.3%
Method cache collisions 108,447 101,955 -6.0%
Frees 16,764,658 17,749,215 5.9%
Allocations to 512 bytes 15,278,480 40.4% 16,113,195 40.0% 5.5%
Allocations 15,399,797 40.7% 16,234,555 40.3% 5.4%
Method cache misses 73,954 71,096 -3.9%
Allocations to 4 kbytes 77,720 0.2% 77,756 0.2% 0.0%
Allocations over 4 kbytes 43,597 0.1% 43,604 0.1% 0.0%
Materialize dict (on request) 640 0.0% 640 0.0% 0.0%
Materialize dict (new key) 0 0.0% 0 0.0%
Materialize dict (too big) 0 0.0% 0 0.0%
Materialize dict (str subclass) 0 0.0% 0 0.0%

GC stats

GC collections and effectiveness

Collected/visits gives some measure of efficiency.

Generation Base Collections Base Objects collected Base Object visits Base Reachable from roots Base Not reachable from roots Head Collections Head Objects collected Head Object visits Head Reachable from roots Head Not reachable from roots
0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0

Optimization (Tier 2) stats

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

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

54 2.6% 68 3.1% 25.9%
Uops executed

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

414,888,220 2,012.8% 443,623,689 2,083.0% 6.9%
Trace too short

A potential trace is abandoned because it it too short.

1,777 84.4% 1,853 84.6% 4.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.

2,106 2,190 4.0%
Trace stack underflow

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

1,790 85.0% 1,861 85.0% 4.0%
Traces executed

The number of traces that were executed

20,612,205 21,297,127 3.3%
Traces created

The number of traces that were successfully created.

275 13.1% 269 12.3% -2.2%
Trace too long

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

0 0.0% 0 0.0%
Inner loop found

A trace is truncated because it has an inner loop

13 0.6% 13 0.6% 0.0%
Recursive call

A trace is truncated because it has a recursive call.

0 0.0% 0 0.0%
Low confidence

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

0 0.0% 0 0.0%
Executors invalidated

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

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

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

275 269 -2.2%
Optimizer successes

The number of traces that were successfully optimized.

275 100.0% 269 100.0% -2.2%
Optimizer no memory

The number of optimizations that failed due to no memory.

0 0.0% 0 0.0%
Remove globals builtins changed

The builtins changed during optimization

0 0.0% 0 0.0%
Remove globals incorrect keys

The keys in the globals dictionary aren't what was expected

0 0.0% 0 0.0%

JIT memory stats

JIT memory stats
Base Size (bytes) Base Ratio Head Size (bytes) Head Ratio Change
Padding size

The size of the memory allocated for the padding of the JIT traces

672,548 16.2% 649,053 16.0% -3.5%
Data size

The size of the memory allocated for the data of the JIT traces

523,416 12.6% 510,104 12.6% -2.5%
Total memory size

The total size of the memory allocated for the JIT traces

4,161,536 4,063,232 -2.4%
Code size

The size of the memory allocated for the code of the JIT traces

2,965,572 71.3% 2,904,075 71.5% -2.1%
Trampoline size

The size of the memory allocated for the trampolines of the JIT traces

0 0.0% 0 0.0%
Freed memory size

The size of the memory freed from the JIT traces

0 0.0% 8,192 0.2% 8,192 / 0 !!

JIT trace total memory histogram

JIT trace total memory histogram
Size (bytes) Base Count Base Ratio Head Count Head Ratio Change
<= 4,096 79 28.7% 77 28.5% -2.5%
<= 8,192 66 24.0% 65 24.1% -1.5%
<= 16,384 64 23.3% 63 23.3% -1.6%
<= 32,768 44 16.0% 44 16.3% 0.0%
<= 65,536 22 8.0% 21 7.8% -4.5%

Trace length histogram

trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 8 63 22.9% 62 23.0% -1.6%
<= 16 16 5.8% 15 5.6% -6.2%
<= 32 52 18.9% 52 19.3% 0.0%
<= 64 50 18.2% 49 18.2% -2.0%
<= 128 59 21.5% 58 21.6% -1.7%
<= 256 13 4.7% 12 4.5% -7.7%
<= 512 22 8.0% 21 7.8% -4.5%

Optimized trace length histogram

optimized trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 4 1 0.4% 1 0.4% 0.0%
<= 8 77 28.0% 75 27.9% -2.6%
<= 16 1 0.4% 1 0.4% 0.0%
<= 32 101 36.7% 100 37.2% -1.0%
<= 64 30 10.9% 28 10.4% -6.7%
<= 128 30 10.9% 31 11.5% 3.3%
<= 256 35 12.7% 33 12.3% -5.7%

Trace run length histogram

trace run length histogram

Uop execution stats

uop execution stats
Name Base Count Head Count Change
_CALL_METHOD_DESCRIPTOR_NOARGS 74,499 98,371 32.0%
_CALL_LIST_APPEND 103,959 128,223 23.3%
_CALL_LEN 124,008 150,218 21.1%
_INIT_CALL_PY_EXACT_ARGS 124,008 150,218 21.1%
_LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 382,446 451,788 18.1%
_LOAD_ATTR 1,699,025 2,005,371 18.0%
_CALL_BUILTIN_CLASS 545,292 643,544 18.0%
_CALL_BUILTIN_FAST 261,643 307,726 17.6%
_RETURN_VALUE 1,834,121 2,155,578 17.5%
_BINARY_SUBSCR_LIST_INT 281,600 329,633 17.1%
_ITER_NEXT_RANGE 281,600 329,633 17.1%
_TO_BOOL_BOOL 1,073,731 1,256,783 17.0%
_LOAD_ATTR_PROPERTY_FRAME 439,192 509,048 15.9%
_GUARD_NOT_EXHAUSTED_RANGE 439,206 509,062 15.9%
_ITER_CHECK_RANGE 439,206 509,062 15.9%
_BUILD_LIST 430,915 499,346 15.9%
_UNARY_INVERT 731,322 842,298 15.2%
_INIT_CALL_PY_EXACT_ARGS_0 1,469,566 1,683,877 14.6%
_CHECK_STACK_SPACE_OPERAND 2,250,527 2,576,097 14.5%
_PY_FRAME_GENERAL 597,813 684,135 14.4%
_GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 3,329,553 3,806,539 14.3%
_GUARD_KEYS_VERSION 3,329,553 3,806,539 14.3%
_BINARY_OP_EXTEND 2,312,805 2,641,377 14.2%
_GUARD_BINARY_OP_EXTEND 2,476,371 2,827,001 14.2%
_RESUME_CHECK 4,316,248 4,925,086 14.1%
_COMPARE_OP_INT 798,657 909,469 13.9%
_LOAD_ATTR_METHOD_WITH_VALUES 2,947,107 3,354,751 13.8%
_LOAD_SMALL_INT_0 1,125,602 1,280,576 13.8%
_INIT_CALL_PY_EXACT_ARGS_1 1,601,549 1,821,092 13.7%
_DEOPT 163,623 185,625 13.4%
_TO_BOOL_INT 1,603,506 1,818,570 13.4%
_LOAD_CONST_INLINE_BORROW 6,488,575 7,351,337 13.3%
_SAVE_RETURN_OFFSET 5,163,126 5,841,820 13.1%
_GUARD_IS_FALSE_POP 2,252,579 2,546,354 13.0%
_CHECK_FUNCTION_VERSION 4,200,622 4,747,008 13.0%
_CHECK_FUNCTION_EXACT_ARGS 3,602,809 4,062,873 12.8%
_STORE_FAST_1 1,690,139 1,897,949 12.3%
_STORE_SUBSCR_DICT 174,436 195,254 11.9%
_COPY_FREE_VARS 523,312 585,764 11.9%
_LOAD_DEREF 523,312 585,764 11.9%
_CALL_ISINSTANCE 523,312 585,764 11.9%
_LOAD_SUPER_ATTR_METHOD 523,312 585,764 11.9%
_CHECK_FUNCTION_VERSION_INLINE 523,312 585,764 11.9%
_INIT_CALL_PY_EXACT_ARGS_3 523,312 585,764 11.9%
_LOAD_CONST_INLINE 2,877,860 3,205,679 11.4%
_CHECK_FUNCTION 4,861,566 5,410,598 11.3%
_LOAD_FAST_1 7,854,067 8,709,499 10.9%
_STORE_FAST_3 1,647,632 1,826,548 10.9%
_LOAD_FAST_0 10,663,425 11,792,137 10.6%
_LOAD_FAST_6 740,586 815,320 10.1%
_GUARD_IS_TRUE_POP 2,856,921 3,143,392 10.0%
_GUARD_NOS_INT 1,202,008 1,312,845 9.2%
_LOAD_FAST_3 3,412,887 3,727,493 9.2%
_CALL_METHOD_DESCRIPTOR_FAST 1,008,702 1,097,976 8.9%
_GUARD_IS_NOT_NONE_POP 2,097,635 2,275,941 8.5%
_PUSH_NULL 5,043,943 5,468,062 8.4%
_GUARD_TYPE_VERSION 7,371,394 7,987,563 8.4%
_STORE_FAST_6 586,238 634,368 8.2%
_STORE_FAST_7 586,238 634,368 8.2%
_STORE_FAST_4 1,926,223 2,080,452 8.0%
_LOAD_FAST_7 1,256,350 1,355,348 7.9%
_PUSH_FRAME 9,729,836 10,408,530 7.0%
_GET_ITER 1,370,285 1,464,936 6.9%
_CHECK_MANAGED_OBJECT_HAS_VALUES 6,605,944 7,045,942 6.7%
_LOAD_ATTR_INSTANCE_VALUE 6,605,944 7,045,942 6.7%
_POP_TOP 8,140,156 8,679,944 6.6%
_SET_IP 48,421,815 51,615,112 6.6%
_COPY 1,367,919 1,458,104 6.6%
_CHECK_VALIDITY 38,438,881 40,971,370 6.6%
_LOAD_FAST 2,874,112 3,055,641 6.3%
_SWAP 1,540,457 1,636,783 6.3%
_LOAD_FAST_4 2,909,543 3,084,924 6.0%
_LOAD_FAST_5 1,218,749 1,290,037 5.8%
_LOAD_ATTR_METHOD_NO_DICT 2,377,566 2,515,005 5.8%
_LOAD_FAST_2 9,547,637 10,075,872 5.5%
_CHECK_VALIDITY_AND_SET_IP 16,306,762 17,128,000 5.0%
_GUARD_DORV_NO_DICT 477,850 501,747 5.0%
_GUARD_TYPE_VERSION_AND_LOCK 477,850 501,747 5.0%
_STORE_ATTR_INSTANCE_VALUE 477,850 501,747 5.0%
_COMPARE_OP_STR 535,845 562,060 4.9%
_GUARD_BOTH_UNICODE 535,845 562,060 4.9%
_UNPACK_SEQUENCE_TWO_TUPLE 511,737 535,997 4.7%
_GUARD_IS_NONE_POP 515,775 540,044 4.7%
_TO_BOOL 515,856 540,116 4.7%
_JUMP_TO_TOP 578,669 605,272 4.6%
_GUARD_NOT_EXHAUSTED_LIST 6,778,883 7,089,068 4.6%
_ITER_CHECK_LIST 6,778,883 7,089,068 4.6%
_STORE_FAST_5 1,093,859 1,138,937 4.1%
_EXIT_TRACE 15,034,994 15,628,058 3.9%
_CONTAINS_OP_DICT 581,905 602,748 3.6%
_CHECK_PERIODIC 18,808,226 19,464,415 3.5%
_MAKE_WARM 21,190,874 21,908,159 3.4%
_START_EXECUTOR 20,612,205 21,297,127 3.3%
_CALL_NON_PY_GENERAL 2,688,299 2,775,341 3.2%
_CHECK_IS_NOT_PY_CALLABLE 2,688,299 2,775,341 3.2%
_STORE_FAST_2 5,262,961 5,379,454 2.2%
_ITER_NEXT_LIST 4,932,050 5,040,589 2.2%
_BUILD_TUPLE 1,327,017 1,351,281 1.8%
_TIER2_RESUME_CHECK 5,702,612 5,801,383 1.7%
_DYNAMIC_EXIT 5,413,588 5,483,444 1.3%
_STORE_FAST 2,534,481 2,558,745 1.0%
_BINARY_OP_ADD_INT 403,351 403,376 0.0%
_CALL_METHOD_DESCRIPTOR_O 403,351 403,376 0.0%
_LOAD_SMALL_INT_1 403,351 403,376 0.0%
_FOR_ITER_TIER_TWO 824,634 824,639 0.0%
_FOR_ITER_GEN_FRAME 4,566,710 4,566,710 0.0%
_LOAD_SPECIAL 815,372 815,372 0.0%
_BUILD_MAP 811,253 811,253 0.0%
_UNPACK_SEQUENCE_TUPLE 811,253 811,253 0.0%
_CALL_TUPLE_1 411,805 411,805 0.0%
_BINARY_SUBSCR 407,686 407,686 0.0%
_CHECK_STACK_SPACE 407,686 407,686 0.0%
_INIT_CALL_PY_EXACT_ARGS_2 407,686 407,686 0.0%
_DICT_MERGE 403,567 403,567 0.0%
_LIST_APPEND 882 882 0.0%
_BINARY_SUBSCR_STR_INT 882 882 0.0%
_BINARY_OP_MULTIPLY_FLOAT 882 882 0.0%
_CALL_BUILTIN_O 882 882 0.0%
_GUARD_BOTH_FLOAT 882 882 0.0%

Pair counts

Pair counts for top 100 Non-JIT uop pairs

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

Not included in comparative output.

Unsupported opcodes

unsupported opcodes
Opcode Base Count Head Count Change
CALL_FUNCTION_EX 107 107 0.0%

Optimizer errored out with opcode

Optimization stopped after encountering this opcode

Rare events

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

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

0 0
set bases

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

0 0
set eval frame func

Setting the PEP 523 frame eval function _PyInterpreterState_SetFrameEvalFunc()

0 0
builtin dict

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

0 0
func modification

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

0 0
watched dict modification

A watched dict has been modified

0 0
watched globals modification

A watched globals() dict has been modified

0 0

Meta stats

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

Stats gathered on: 2025-02-06