Skip to content

Latest commit

 

History

History
4344 lines (4054 loc) · 87.7 KB

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

File metadata and controls

4344 lines (4054 loc) · 87.7 KB

Execution counts

Execution counts for Tier 1 instructions.

The "miss ratio" column shows the percentage of times the instruction executed that it deoptimized. When this happens, the base unspecialized instruction is not counted.

Name Base Count Head Count Change
JUMP_BACKWARD 271,618 6 -100.0%
LOAD_FAST 253,705,799 253,705,799 0.0%
LOAD_CONST_IMMORTAL 87,138,685 87,138,685 0.0%
RETURN_VALUE 83,021,569 83,021,569 0.0%
LOAD_ATTR_INSTANCE_VALUE 77,000,124 77,000,124 0.0%
RESUME_CHECK 67,747,103 67,747,103 0.0%
POP_JUMP_IF_FALSE 61,918,541 61,918,541 0.0%
POP_TOP 61,397,790 61,397,790 0.0%
LOAD_FAST_LOAD_FAST 58,126,706 58,126,706 0.0%
STORE_ATTR_SLOT 54,345,651 54,345,651 0.0%
LOAD_METHOD_WITH_VALUES 47,216,386 47,216,386 0.0%
TO_BOOL_BOOL 42,591,200 42,591,200 0.0%
STORE_FAST 36,590,278 36,590,278 0.0%
CALL_PY_EXACT_ARGS 31,726,376 31,726,376 0.0%
LOAD_ATTR_SLOT 23,312,666 23,312,666 0.0%
INTERPRETER_EXIT 19,707,913 19,707,913 0.0%
TO_BOOL_NONE 19,110,205 19,110,205 0.0%
POP_JUMP_IF_NOT_NONE 16,407,869 16,407,869 0.0%
LOAD_METHOD_NO_DICT 14,943,450 14,943,450 0.0%
CALL_METHOD_DESCRIPTOR_O 14,929,915 14,929,915 0.0%
PUSH_NULL 14,722,764 14,722,764 0.0%
LOAD_GLOBAL_MODULE 14,110,664 14,110,664 0.0%
LOAD_ATTR_MODULE 12,912,423 12,912,423 0.0%
ENTER_EXECUTOR 11,673,493 11,673,493 0.0%
CALL_FUNCTION_EX 11,346,880 11,346,880 0.0%
STORE_ATTR_INSTANCE_VALUE 11,034,043 11,034,043 0.0%
POP_JUMP_IF_NONE 8,540,144 8,540,144 0.0%
CALL_NON_PY_GENERAL 8,363,871 8,363,871 0.0%
EXIT_INIT_CHECK 8,360,891 8,360,891 0.0%
CALL_ALLOC_AND_ENTER_INIT 8,360,891 8,360,891 0.0%
NOP 8,143,935 8,143,935 0.0%
LOAD_ATTR 7,773,747 7,773,747 0.0%
POP_JUMP_IF_TRUE 7,768,193 7,768,193 0.0%
RETURN_GENERATOR 7,466,742 7,466,742 0.0%
DELETE_FAST 7,166,272 7,166,272 0.0%
END_SEND 5,374,848 5,374,848 0.0%
SEND_GEN 5,078,064 5,078,064 0.0%
GET_AWAITABLE 4,480,758 4,480,758 0.0%
LOAD_SMALL_INT 4,260,689 4,260,689 0.0%
TO_BOOL 4,220,176 4,220,176 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 4,186,666 4,186,666 0.0%
LOAD_CONST_MORTAL 3,952,193 3,952,193 0.0%
COMPARE_OP_INT 3,586,170 3,586,170 0.0%
JUMP_FORWARD 3,586,113 3,586,113 0.0%
BUILD_TUPLE 3,583,808 3,583,808 0.0%
CALL_PY_GENERAL 3,583,671 3,583,671 0.0%
BUILD_MAP 3,583,488 3,583,488 0.0%
CALL_KW_PY 3,583,293 3,583,293 0.0%
DICT_MERGE 3,583,232 3,583,232 0.0%
JUMP_BACKWARD_NO_INTERRUPT 1,791,680 1,791,680 0.0%
YIELD_VALUE 1,791,680 1,791,680 0.0%
LOAD_GLOBAL_BUILTIN 1,202,023 1,202,023 0.0%
CALL_BUILTIN_CLASS 1,196,217 1,196,217 0.0%
SEND 1,194,688 1,194,688 0.0%
SWAP 1,194,629 1,194,629 0.0%
LOAD_SPECIAL 1,194,372 1,194,372 0.0%
FOR_ITER_RANGE 692,647 692,647 0.0%
BINARY_OP_SUBTRACT_INT 672,332 672,332 0.0%
BUILD_LIST 603,898 603,898 0.0%
GET_ITER 601,217 601,217 0.0%
COPY 599,043 599,043 0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS 597,309 597,309 0.0%
CALL_KW_NON_PY 367,949 367,949 0.0%
TO_BOOL_LIST 178,642 178,642 0.0%
POP_ITER 109,191 109,191 0.0%
CALL_INTRINSIC_1 5,370 5,370 0.0%
LIST_EXTEND 5,370 5,370 0.0%
CALL_LEN 3,837 3,837 0.0%
CALL 2,893 2,893 0.0%
FOR_ITER_LIST 2,621 2,621 0.0%
LOAD_METHOD 2,371 2,371 0.0%
TO_BOOL_INT 1,658 1,658 0.0%
LOAD_GLOBAL 1,637 1,637 0.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 1,469 1,469 0.0%
STORE_ATTR 1,352 1,352 0.0%
BINARY_OP_ADD_FLOAT 1,279 1,279 0.0%
LOAD_DEREF 768 768 0.0%
COPY_FREE_VARS 704 704 0.0%
BINARY_OP 580 580 0.0%
LOAD_SUPER_METHOD_METHOD 504 504 0.0%
COMPARE_OP 485 485 0.0%
CALL_ISINSTANCE 446 446 0.0%
IS_OP 384 384 0.0%
BINARY_SUBSCR 348 348 0.0%
BINARY_SUBSCR_TUPLE_INT 318 318 0.0%
FOR_ITER 267 267 0.0%
FORMAT_SIMPLE 256 256 0.0%
MAKE_FUNCTION 256 256 0.0%
SET_FUNCTION_ATTRIBUTE 256 256 0.0%
CALL_BUILTIN_FAST 255 255 0.0%
UNPACK_SEQUENCE_TWO_TUPLE 252 252 0.0%
STORE_FAST_STORE_FAST 192 192 0.0%
CALL_METHOD_DESCRIPTOR_FAST 190 190 0.0%
LOAD_CONST 182 182 0.0%
LOAD_SUPER_METHOD 176 176 0.0%
CHECK_EXC_MATCH 129 129 0.0%
POP_EXCEPT 129 129 0.0%
PUSH_EXC_INFO 129 129 0.0%
UNARY_INVERT 128 128 0.0%
UNARY_NOT 128 128 0.0%
BUILD_STRING 128 128 0.0%
MAKE_CELL 128 128 0.0%
BINARY_SUBSCR_DICT 127 127 0.0%
CALL_BUILTIN_O 126 126 0.0%
RESUME 93 93 0.0%
UNPACK_SEQUENCE 88 88 0.0%
IMPORT_NAME 65 65 0.0%
RAISE_VARARGS 64 64 0.0%
RERAISE 64 64 0.0%
STORE_DEREF 64 64 0.0%
BINARY_SUBSCR_GETITEM 64 64 0.0%
BINARY_OP_ADD_INT 63 63 0.0%
BINARY_OP_SUBTRACT_FLOAT 63 63 0.0%
CALL_BOUND_METHOD_EXACT_ARGS 63 63 0.0%
CALL_BOUND_METHOD_GENERAL 63 63 0.0%
CALL_TYPE_1 63 63 0.0%
CONTAINS_OP_DICT 63 63 0.0%
CONTAINS_OP_SET 63 63 0.0%
LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES 63 63 0.0%
STORE_SUBSCR_DICT 63 63 0.0%
CALL_KW 54 54 0.0%
CONTAINS_OP 44 44 0.0%
STORE_SUBSCR 23 23 0.0%
FOR_ITER_TUPLE 2 2 0.0%
IMPORT_FROM 1 1 0.0%
LOAD_FAST_CHECK 1 1 0.0%
STORE_FAST_LOAD_FAST 1 1 0.0%
STORE_GLOBAL 1 1 0.0%
COMPARE_OP_STR 1 1 0.0%
TO_BOOL_ALWAYS_TRUE 1 1 0.0%
JUMP_BACKWARD_JIT 271,618

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.

389 0.0% 389 0.0% 0.0%
hit

Specialized instructions that complete.

3,584,571 100.0% 3,584,571 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 65 34.0% 65 34.0% 0.0%
Failure 126 66.0% 126 66.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
and int 84 66.7% 84 66.7% 0.0%
or 42 33.3% 42 33.3% 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.

260 30.3% 260 30.3% 0.0%
hit

Specialized instructions that complete.

509 59.4% 509 59.4% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 44 50.0% 44 50.0% 0.0%
Failure 44 50.0% 44 50.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 44 100.0% 44 100.0% 0.0%

CALL

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

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

190 0.0% 190 0.0% 0.0%
hit

Specialized instructions that complete.

80,640,256 100.0% 80,640,256 100.0% 0.0%
miss

Specialized instructions that deopt.

379 0.0% 379 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 2,703 100.0% 2,703 100.0% 0.0%
Failure 0 0.0% 0 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
init not python 21 21 / 0 !! 21 21 / 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.

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

393 0.0% 393 0.0% 0.0%
hit

Specialized instructions that complete.

3,586,171 100.0% 3,586,171 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 26 28.3% 26 28.3% 0.0%
Failure 66 71.7% 66 71.7% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
tuple 44 66.7% 44 66.7% 0.0%
bool 22 33.3% 22 33.3% 0.0%

CONTAINS_OP

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

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

2 1.2% 2 1.2% 0.0%
hit

Specialized instructions that complete.

126 74.1% 126 74.1% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 42 100.0% 42 100.0% 0.0%
Failure 0 0.0% 0 0.0%

FOR_ITER

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

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

197 0.0% 197 0.0% 0.0%
hit

Specialized instructions that complete.

695,270 100.0% 695,270 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 25 35.7% 25 35.7% 0.0%
Failure 45 64.3% 45 64.3% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
dict items 44 97.8% 44 97.8% 0.0%
dict values 1 2.2% 1 2.2% 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,769,871 3.0% 7,769,871 3.0% 0.0%
hit

Specialized instructions that complete.

247,041,575 96.9% 247,041,575 96.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 1,643 42.6% 1,643 42.6% 0.0%
Failure 2,212 57.4% 2,212 57.4% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
method 1,022 46.2% 1,022 46.2% 0.0%
overriding descriptor 1,010 45.7% 1,010 45.7% 0.0%
module attr not found 159 7.2% 159 7.2% 0.0%
metaclass attribute 21 0.9% 21 0.9% 0.0%

LOAD_GLOBAL

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

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

112 0.0% 112 0.0% 0.0%
deopt

Specialized instructions that deopt.

64 0.0% 64 0.0% 0.0%
hit

Specialized instructions that complete.

15,312,623 100.0% 15,312,623 100.0% 0.0%
miss

Specialized instructions that deopt.

64 0.0% 64 0.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 1,525 100.0% 1,525 100.0% 0.0%
Failure 0 0.0% 0 0.0%

LOAD_METHOD

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

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

803 33.9% 803 33.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 1,398 89.2% 1,398 89.2% 0.0%
Failure 170 10.8% 170 10.8% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 107 62.9% 107 62.9% 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.

504 100.0% 504 100.0% 0.0%

LOAD_SUPER_METHOD

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

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

8 4.5% 8 4.5% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 168 100.0% 168 100.0% 0.0%
Failure 0 0.0% 0 0.0%

SEND

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

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

1,194,374 16.7% 1,194,374 16.7% 0.0%
hit

Specialized instructions that complete.

5,972,154 83.3% 5,972,154 83.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 6 1.9% 6 1.9% 0.0%
Failure 308 98.1% 308 98.1% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
other 308 100.0% 308 100.0% 0.0%

STORE_ATTR

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

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

270 0.0% 270 0.0% 0.0%
hit

Specialized instructions that complete.

65,695,219 100.0% 65,695,219 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 1,039 96.0% 1,039 96.0% 0.0%
Failure 43 4.0% 43 4.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
overriding descriptor 21 48.8% 21 48.8% 0.0%

STORE_SUBSCR

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

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

2 2.3% 2 2.3% 0.0%
hit

Specialized instructions that complete.

63 73.3% 63 73.3% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 21 100.0% 21 100.0% 0.0%
Failure 0 0.0% 0 0.0%

TO_BOOL

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

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

4,218,336 5.1% 4,218,336 5.1% 0.0%
hit

Specialized instructions that complete.

78,240,203 94.9% 78,240,203 94.9% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 719 39.1% 719 39.1% 0.0%
Failure 1,121 60.9% 1,121 60.9% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
set 1,055 94.1% 1,055 94.1% 0.0%
sequence 66 5.9% 66 5.9% 0.0%

UNPACK_SEQUENCE

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

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

4 1.2% 4 1.2% 0.0%
hit

Specialized instructions that complete.

252 74.1% 252 74.1% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 84 100.0% 84 100.0% 0.0%
Failure 0 0.0% 0 0.0%

Specialization effectiveness

specialization effectiveness

All entries are execution counts. Should add up to the total number of Tier 1 instructions executed.

Instructions Base Count Base Ratio Head Count Head Ratio Change
Specialized hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

563,729,031 43.7% 564,000,649 43.7% 0.0%
Basic

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

712,691,034 55.3% 712,419,422 55.2% -0.0%
Not specialized

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

13,198,929 1.0% 13,198,929 1.0% 0.0%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

5,515 0.0% 5,515 0.0% 0.0%

Deferred by instruction

Breakdown of deferred (not specialized) instruction counts by family
Name Base Count Base Ratio Head Count Head Ratio Change
LOAD_ATTR 7,769,871 58.9% 7,769,871 58.9% 0.0%
TO_BOOL 4,218,336 32.0% 4,218,336 32.0% 0.0%
SEND 1,194,374 9.1% 1,194,374 9.1% 0.0%
LOAD_METHOD 803 0.0% 803 0.0% 0.0%
COMPARE_OP 393 0.0% 393 0.0% 0.0%
BINARY_OP 389 0.0% 389 0.0% 0.0%
STORE_ATTR 270 0.0% 270 0.0% 0.0%
BINARY_SUBSCR 260 0.0% 260 0.0% 0.0%
FOR_ITER 197 0.0% 197 0.0% 0.0%
CALL 190 0.0% 190 0.0% 0.0%

Misses by instruction

Breakdown of misses (specialized deopts) instruction counts by family
Name Base Count Base Ratio Head Count Head Ratio Change
RESUME 5,072 47.9% 5,072 47.9% 0.0%
RESUME_CHECK 5,072 47.9% 5,072 47.9% 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 253 2.4% 253 2.4% 0.0%
CALL_METHOD_DESCRIPTOR_O 126 1.2% 126 1.2% 0.0%
LOAD_GLOBAL_BUILTIN 64 0.6% 64 0.6% 0.0%
CACHE 0 0.0% 0 0.0%
CALL_FUNCTION_EX 0 0.0% 0 0.0%
CHECK_EXC_MATCH 0 0.0% 0 0.0%
END_SEND 0 0.0% 0 0.0%
EXIT_INIT_CHECK 0 0.0% 0 0.0%

Call stats

Inlined calls and frame stats

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

Also includes the count of frame objects created.

Base Count Base Ratio Head Count Head Ratio Change
Calls to PyEval_EvalDefault 19,707,977 23.2% 19,707,977 23.2% 0.0%
Calls to Python functions inlined 65,105,277 76.8% 65,105,277 76.8% 0.0%
Calls via PyEval_EvalFrame (total) 19,707,977 23.2% 19,707,977 23.2% 0.0%
Calls via PyEval_EvalFrame (vector) 15,527,625 18.3% 15,527,625 18.3% 0.0%
Calls via PyEval_EvalFrame (generator) 4,180,352 4.9% 4,180,352 4.9% 0.0%
Calls via PyEval_EvalFrame (legacy) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (function vectorcall) 15,527,625 18.3% 15,527,625 18.3% 0.0%
Calls via PyEval_EvalFrame (build class) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (slot) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (function ex) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (api) 67 0.0% 67 0.0% 0.0%
Calls via PyEval_EvalFrame (method) 11,943,872 14.1% 11,943,872 14.1% 0.0%
Frame objects created 449 0.0% 449 0.0% 0.0%
Frames pushed 83,021,633 97.9% 83,021,633 97.9% 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 191 118 -38.2%
Method cache misses 448 520 16.1%
Method cache collisions 570 563 -1.2%
Method cache dunder hits 1,195,794 1,195,867 0.0%
Method cache hits 27,478,718 27,478,646 -0.0%
Frees 62,858,402 62,858,412 0.0%
Immortal decrefs 168,769,873 12.7% 168,769,852 12.7% -0.0%
Immortal increfs 132,550,014 11.3% 132,550,002 11.3% -0.0%
Mortal decrefs 323,900,466 24.5% 323,900,483 24.5% 0.0%
Mortal increfs 290,288,467 24.8% 290,288,476 24.8% 0.0%
Allocations from freelist 44,190,464 41.3% 44,190,464 41.3% 0.0%
Frees to freelist 44,193,222 44,193,222 0.0%
Allocations 62,860,926 58.7% 62,860,926 58.7% 0.0%
Allocations to 512 bytes 62,216,870 58.1% 62,216,870 58.1% 0.0%
Allocations to 4 kbytes 644,056 0.6% 644,056 0.6% 0.0%
Allocations over 4 kbytes 0 0.0% 0 0.0%
Inline values 4,777,922 4,777,922 0.0%
Interpreter mortal increfs 630,166,804 53.9% 630,166,804 53.9% 0.0%
Interpreter mortal decrefs 686,598,018 51.8% 686,598,018 51.8% 0.0%
Interpreter immortal increfs 115,207,682 9.9% 115,207,682 9.9% 0.0%
Interpreter immortal decrefs 145,330,487 11.0% 145,330,487 11.0% 0.0%
Materialize dict (on request) 0 0.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 14,273 389 388,346,280 33,528,358 29,357,588 14,273 389 388,347,048 33,528,094 29,357,588
2 0 0 0 0 0 0 0 0 0 0

Optimization (Tier 2) stats

statistics about the Tier 2 optimizer
Base Count Base Ratio Head Count Head Ratio Change
Optimization attempts

The number of times a potential trace is identified. Specifically, this occurs in the JUMP BACKWARD instruction when the counter reaches a threshold.

2,879 2,879 0.0%
Traces created

The number of traces that were successfully created.

152 5.3% 152 5.3% 0.0%
Trace stack overflow

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

0 0.0% 0 0.0%
Trace stack underflow

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

894 31.1% 894 31.1% 0.0%
Trace too long

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

0 0.0% 0 0.0%
Trace too short

A potential trace is abandoned because it it too short.

2,727 94.7% 2,727 94.7% 0.0%
Inner loop found

A trace is truncated because it has an inner loop

0 0.0% 0 0.0%
Recursive call

A trace is truncated because it has a recursive call.

22 0.8% 22 0.8% 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%
Traces executed

The number of traces that were executed

13,112,725 13,112,725 0.0%
Uops executed

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

640,092,551 4,881.5% 640,092,551 4,881.5% 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.

152 152 0.0%
Optimizer successes

The number of traces that were successfully optimized.

152 100.0% 152 100.0% 0.0%
Optimizer no memory

The number of optimizations that failed due to no memory.

0 0.0% 0 0.0%
Remove globals builtins changed

The builtins changed during optimization

0 0.0% 0 0.0%
Remove globals incorrect keys

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

0 0.0% 0 0.0%

Trace length histogram

trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 1 0 0.0% 0 0.0%
<= 2 0 0.0% 0 0.0%
<= 4 0 0.0% 0 0.0%
<= 8 0 0.0% 0 0.0%
<= 16 0 0.0% 0 0.0%
<= 32 43 28.3% 43 28.3% 0.0%
<= 64 44 28.9% 44 28.9% 0.0%
<= 128 65 42.8% 65 42.8% 0.0%

Optimized trace length histogram

optimized trace length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 1 0 0.0% 0 0.0%
<= 2 0 0.0% 0 0.0%
<= 4 0 0.0% 0 0.0%
<= 8 0 0.0% 0 0.0%
<= 16 21 13.8% 21 13.8% 0.0%
<= 32 44 28.9% 44 28.9% 0.0%
<= 64 87 57.2% 87 57.2% 0.0%

Trace run length histogram

trace run length histogram
Range Base Count Base Ratio Head Count Head Ratio Change
<= 1 0 0.0% 0 0.0%

Uop execution stats

uop execution stats
Name Base Count Head Count Change
_SET_IP 64,650,571 64,650,571 0.0%
_CHECK_VALIDITY 51,877,882 51,877,882 0.0%
_LOAD_FAST_0 45,700,730 45,700,730 0.0%
_LOAD_ATTR_SLOT 31,032,600 31,032,600 0.0%
_GUARD_TYPE_VERSION 30,550,267 30,550,267 0.0%
_CHECK_PERIODIC 19,661,239 19,661,239 0.0%
_CHECK_MANAGED_OBJECT_HAS_VALUES 18,568,370 18,568,370 0.0%
_LOAD_ATTR_INSTANCE_VALUE 18,568,370 18,568,370 0.0%
_GUARD_IS_FALSE_POP 17,200,696 17,200,696 0.0%
_CHECK_VALIDITY_AND_SET_IP 16,410,390 16,410,390 0.0%
_TO_BOOL_BOOL 15,937,399 15,937,399 0.0%
_LOAD_FAST_3 15,937,399 15,937,399 0.0%
_PUSH_NULL 15,745,851 15,745,851 0.0%
_LOAD_METHOD_NO_DICT 15,516,300 15,516,300 0.0%
_MAKE_WARM 13,112,725 13,112,725 0.0%
_START_EXECUTOR 13,112,725 13,112,725 0.0%
_PUSH_FRAME 12,772,689 12,772,689 0.0%
_EXIT_TRACE 11,903,089 11,903,089 0.0%
_CHECK_FUNCTION_EXACT_ARGS 11,878,599 11,878,599 0.0%
_CHECK_FUNCTION_VERSION 11,878,599 11,878,599 0.0%
_SAVE_RETURN_OFFSET 11,878,599 11,878,599 0.0%
_STORE_FAST_3 11,807,608 11,807,608 0.0%
_GUARD_NOT_EXHAUSTED_RANGE 11,252,439 11,252,439 0.0%
_ITER_CHECK_RANGE 11,252,439 11,252,439 0.0%
_ITER_NEXT_RANGE 10,668,984 10,668,984 0.0%
_CHECK_STACK_SPACE_OPERAND 8,652,240 8,652,240 0.0%
_RESUME_CHECK 8,475,696 8,475,696 0.0%
_INIT_CALL_PY_EXACT_ARGS_0 8,073,675 8,073,675 0.0%
_BUILD_LIST 7,758,150 7,758,150 0.0%
_CALL_INTRINSIC_1 7,758,150 7,758,150 0.0%
_LIST_EXTEND 7,758,150 7,758,150 0.0%
_CALL_METHOD_DESCRIPTOR_NOARGS 7,758,150 7,758,150 0.0%
_LOAD_ATTR 7,758,150 7,758,150 0.0%
_STORE_FAST 7,758,150 7,758,150 0.0%
_GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 6,539,193 6,539,193 0.0%
_GUARD_KEYS_VERSION 6,539,193 6,539,193 0.0%
_LOAD_METHOD_WITH_VALUES 6,539,193 6,539,193 0.0%
_LOAD_FAST_1 4,364,983 4,364,983 0.0%
_LOAD_CONST_INLINE_BORROW 4,245,608 4,245,608 0.0%
_LOAD_FAST_2 3,628,359 3,628,359 0.0%
_CHECK_STACK_SPACE 3,226,359 3,226,359 0.0%
_BINARY_OP_SUBTRACT_INT 2,910,834 2,910,834 0.0%
_GUARD_NOS_INT 2,910,834 2,910,834 0.0%
_INIT_CALL_PY_EXACT_ARGS_1 2,910,834 2,910,834 0.0%
_LOAD_SMALL_INT_1 2,910,834 2,910,834 0.0%
_GUARD_IS_NONE_POP 2,525,397 2,525,397 0.0%
_POP_TOP 1,209,636 1,209,636 0.0%
_DYNAMIC_EXIT 1,209,615 1,209,615 0.0%
_TO_BOOL 1,157,723 1,157,723 0.0%
_RETURN_GENERATOR 894,090 894,090 0.0%
_GET_AWAITABLE 894,090 894,090 0.0%
_SEND_GEN_FRAME 894,090 894,090 0.0%
_INIT_CALL_PY_EXACT_ARGS_3 492,090 492,090 0.0%
_LOAD_CONST_INLINE 459,102 459,102 0.0%
_TO_BOOL_LIST 421,099 421,099 0.0%
_INIT_CALL_PY_EXACT_ARGS_2 402,000 402,000 0.0%
_GUARD_DORV_NO_DICT 315,525 315,525 0.0%
_GUARD_IS_TRUE_POP 315,525 315,525 0.0%
_GUARD_TYPE_VERSION_AND_LOCK 315,525 315,525 0.0%
_STORE_ATTR_INSTANCE_VALUE 315,525 315,525 0.0%
_CALL_KW_NON_PY 229,551 229,551 0.0%
_CHECK_FUNCTION 229,551 229,551 0.0%
_CHECK_IS_NOT_PY_CALLABLE_KW 229,551 229,551 0.0%
_TIER2_RESUME_CHECK 229,551 229,551 0.0%
_DEOPT 21 21 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 1,898 1,898 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 21 21 0.0%

Stats gathered on: 2025-01-22