Skip to content

Latest commit

 

History

History
4117 lines (3842 loc) · 83.1 KB

bm-20241025-azure-x86_64-brandtbucher-justin_no_externs-3.14.0a1+-64b198a-pystats-async_tree_tg-vs-base.md

File metadata and controls

4117 lines (3842 loc) · 83.1 KB

Execution counts

Execution counts for Tier 1 instructions.

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

Name Base Count Head Count Change
LOAD_FAST 242,561,819 242,561,819 0.0%
LOAD_ATTR_INSTANCE_VALUE 75,284,483 75,284,483 0.0%
RESUME_CHECK 66,910,841 66,910,841 0.0%
LOAD_FAST_LOAD_FAST 65,100,506 65,100,506 0.0%
POP_JUMP_IF_FALSE 64,515,407 64,515,407 0.0%
POP_TOP 60,929,868 60,929,868 0.0%
LOAD_CONST 55,578,381 55,578,381 0.0%
STORE_ATTR_SLOT 54,345,651 54,345,651 0.0%
LOAD_ATTR_METHOD_WITH_VALUES 50,178,278 50,178,278 0.0%
TO_BOOL_BOOL 45,991,339 45,991,339 0.0%
RETURN_CONST 38,226,114 38,226,114 0.0%
RETURN_VALUE 37,031,617 37,031,617 0.0%
STORE_FAST 35,861,806 35,861,806 0.0%
CALL_PY_EXACT_ARGS 31,072,328 31,072,328 0.0%
INTERPRETER_EXIT 27,471,495 27,471,495 0.0%
LOAD_ATTR_SLOT 23,296,358 23,296,358 0.0%
POP_JUMP_IF_NOT_NONE 19,713,581 19,713,581 0.0%
TO_BOOL_NONE 19,110,205 19,110,205 0.0%
CALL_NON_PY_GENERAL 16,127,453 16,127,453 0.0%
LOAD_ATTR_METHOD_NO_DICT 14,935,169 14,935,169 0.0%
CALL_METHOD_DESCRIPTOR_O 14,929,915 14,929,915 0.0%
LOAD_GLOBAL_MODULE 13,748,216 13,748,216 0.0%
PUSH_NULL 13,148,812 13,148,812 0.0%
LOAD_ATTR_MODULE 13,147,601 13,147,601 0.0%
ENTER_EXECUTOR 11,944,943 11,944,943 0.0%
STORE_ATTR_INSTANCE_VALUE 10,756,587 10,756,587 0.0%
POP_JUMP_IF_TRUE 7,768,065 7,768,065 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 7,765,692 7,765,692 0.0%
CALL_FUNCTION_EX 7,763,712 7,763,712 0.0%
LOAD_ATTR 7,174,165 7,174,165 0.0%
RETURN_GENERATOR 7,170,628 7,170,628 0.0%
END_SEND 5,374,848 5,374,848 0.0%
SEND_GEN 4,781,950 4,781,950 0.0%
GET_AWAITABLE 4,184,644 4,184,644 0.0%
POP_JUMP_IF_NONE 3,600,178 3,600,178 0.0%
TO_BOOL 3,591,741 3,591,741 0.0%
CALL_KW_NON_PY 3,588,795 3,588,795 0.0%
COMPARE_OP_INT 3,586,170 3,586,170 0.0%
JUMP_FORWARD 3,586,113 3,586,113 0.0%
CALL_PY_GENERAL 3,583,671 3,583,671 0.0%
CALL_KW_PY 3,583,166 3,583,166 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,201,896 1,201,896 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%
NOP 605,167 605,167 0.0%
GET_ITER 601,217 601,217 0.0%
BUILD_LIST 599,821 599,821 0.0%
COPY 599,043 599,043 0.0%
FOR_ITER_RANGE 598,492 598,492 0.0%
EXIT_INIT_CHECK 597,309 597,309 0.0%
CALL_ALLOC_AND_ENTER_INIT 597,309 597,309 0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS 597,309 597,309 0.0%
BINARY_OP_SUBTRACT_INT 597,259 597,259 0.0%
CALL_LEN 3,837 3,837 0.0%
TO_BOOL_LIST 3,832 3,832 0.0%
CALL 2,893 2,893 0.0%
FOR_ITER_LIST 2,621 2,621 0.0%
TO_BOOL_INT 1,658 1,658 0.0%
LOAD_GLOBAL 1,629 1,629 0.0%
STORE_ATTR 1,502 1,502 0.0%
CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 1,469 1,469 0.0%
CALL_INTRINSIC_1 1,293 1,293 0.0%
LIST_EXTEND 1,293 1,293 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%
BUILD_TUPLE 640 640 0.0%
BINARY_OP 580 580 0.0%
LOAD_SUPER_ATTR_METHOD 504 504 0.0%
CALL_ISINSTANCE 446 446 0.0%
IS_OP 384 384 0.0%
BUILD_MAP 320 320 0.0%
FOR_ITER 267 267 0.0%
MAKE_FUNCTION 256 256 0.0%
SET_FUNCTION_ATTRIBUTE 256 256 0.0%
CALL_BUILTIN_FAST 255 255 0.0%
LOAD_ATTR_CLASS 254 254 0.0%
UNPACK_SEQUENCE_TWO_TUPLE 252 252 0.0%
JUMP_BACKWARD 212 212 0.0%
STORE_FAST_STORE_FAST 192 192 0.0%
CALL_METHOD_DESCRIPTOR_FAST 190 190 0.0%
COMPARE_OP 185 185 0.0%
LOAD_SUPER_ATTR 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%
MAKE_CELL 128 128 0.0%
BINARY_SUBSCR_DICT 127 127 0.0%
CALL_BUILTIN_O 126 126 0.0%
RESUME 91 91 0.0%
UNPACK_SEQUENCE 88 88 0.0%
IMPORT_NAME 65 65 0.0%
DICT_MERGE 64 64 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_SUBSCR_TUPLE_INT 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 50 50 0.0%
BINARY_SUBSCR 44 44 0.0%
CONTAINS_OP 44 44 0.0%
STORE_SUBSCR 23 23 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%
FOR_ITER_TUPLE 1 1 0.0%
TO_BOOL_ALWAYS_TRUE 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
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.

2 0.7% 2 0.7% 0.0%
hit

Specialized instructions that complete.

255 85.3% 255 85.3% 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%

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.

76,459,650 100.0% 76,459,650 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,748 100.0% 2,748 100.0% 0.0%
Failure 0 0.0% 0 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
init not inline values 22 22 / 0 !! 22 22 / 0 !! 0.0%
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.

5 10.0% 5 10.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.

137 0.0% 137 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 54.2% 26 54.2% 0.0%
Failure 22 45.8% 22 45.8% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
bool 22 100.0% 22 100.0% 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.

601,114 100.0% 601,114 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,168,907 2.8% 7,168,907 2.8% 0.0%
hit

Specialized instructions that complete.

250,860,174 97.2% 250,860,174 97.2% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 3,128 59.5% 3,128 59.5% 0.0%
Failure 2,130 40.5% 2,130 40.5% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
method 1,036 48.6% 1,036 48.6% 0.0%
overriding descriptor 1,010 47.4% 1,010 47.4% 0.0%
metaclass attribute 21 1.0% 21 1.0% 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.

108 0.0% 108 0.0% 0.0%
deopt

Specialized instructions that deopt.

64 0.0% 64 0.0% 0.0%
hit

Specialized instructions that complete.

14,950,048 100.0% 14,950,048 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,521 100.0% 1,521 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.

8 1.2% 8 1.2% 0.0%
hit

Specialized instructions that complete.

504 74.1% 504 74.1% 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.

398 0.0% 398 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 94.1% 1,039 94.1% 0.0%
Failure 65 5.9% 65 5.9% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
overridden 44 67.7% 44 67.7% 0.0%
overriding descriptor 21 32.3% 21 32.3% 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.

3,590,001 4.2% 3,590,001 4.2% 0.0%
hit

Specialized instructions that complete.

81,823,306 95.8% 81,823,306 95.8% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 720 41.4% 720 41.4% 0.0%
Failure 1,020 58.6% 1,020 58.6% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
set 954 93.5% 954 93.5% 0.0%
sequence 66 6.5% 66 6.5% 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
Basic

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

720,514,960 59.3% 720,514,960 59.3% 0.0%
Not specialized

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

11,968,075 1.0% 11,968,075 1.0% 0.0%
Specialized hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

481,524,328 39.7% 481,524,328 39.7% 0.0%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

5,570 0.0% 5,570 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,168,907 60.0% 7,168,907 60.0% 0.0%
TO_BOOL 3,590,001 30.0% 3,590,001 30.0% 0.0%
SEND 1,194,374 10.0% 1,194,374 10.0% 0.0%
STORE_ATTR 398 0.0% 398 0.0% 0.0%
BINARY_OP 389 0.0% 389 0.0% 0.0%
FOR_ITER 197 0.0% 197 0.0% 0.0%
CALL 190 0.0% 190 0.0% 0.0%
COMPARE_OP 137 0.0% 137 0.0% 0.0%
LOAD_GLOBAL 108 0.0% 108 0.0% 0.0%
LOAD_SUPER_ATTR 8 0.0% 8 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,127 47.9% 5,127 47.9% 0.0%
RESUME_CHECK 5,127 47.9% 5,127 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%
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%
GET_ITER 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 27,471,559 32.4% 27,471,559 32.4% 0.0%
Calls to Python functions inlined 57,341,439 67.6% 57,341,439 67.6% 0.0%
Calls via PyEval_EvalFrame (total) 27,471,559 32.4% 27,471,559 32.4% 0.0%
Calls via PyEval_EvalFrame (vector) 23,291,207 27.5% 23,291,207 27.5% 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) 23,291,207 27.5% 23,291,207 27.5% 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 129 0.0% 129 0.0% 0.0%
Frames pushed 75,257,795 88.7% 75,257,795 88.7% 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 misses 472 493 4.4%
Method cache dunder misses 140 136 -2.9%
Method cache collisions 544 545 0.2%
Method cache hits 26,880,893 26,880,872 -0.0%
Method cache dunder hits 8,958,725 8,958,729 0.0%
Mortal increfs 331,538,018 24.7% 331,538,058 24.7% 0.0%
Mortal decrefs 375,596,810 26.9% 375,596,851 26.9% 0.0%
Immortal increfs 146,598,797 10.9% 146,598,791 10.9% -0.0%
Immortal decrefs 171,577,846 12.3% 171,577,839 12.3% -0.0%
Frees 70,448,212 70,448,213 0.0%
Allocations from freelist 37,196,034 34.6% 37,196,034 34.6% 0.0%
Frees to freelist 37,198,691 37,198,691 0.0%
Allocations 70,450,254 65.4% 70,450,254 65.4% 0.0%
Allocations to 512 bytes 69,806,177 64.8% 69,806,177 64.8% 0.0%
Allocations to 4 kbytes 644,077 0.6% 644,077 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 659,488,347 49.2% 659,488,347 49.2% 0.0%
Interpreter mortal decrefs 709,650,985 50.8% 709,650,985 50.8% 0.0%
Interpreter immortal increfs 202,544,015 15.1% 202,544,015 15.1% 0.0%
Interpreter immortal decrefs 139,206,931 10.0% 139,206,931 10.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 Head Collections Head Objects collected Head Object visits
0 0 0 0 0 0 0
1 14,273 251 740,666,254 14,273 251 740,666,254
2 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.

3,635 3,635 0.0%
Traces created

The number of traces that were successfully created.

216 5.9% 216 5.9% 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.

1,622 44.6% 1,622 44.6% 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 abandoced because it it too short.

3,419 94.1% 3,419 94.1% 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.6% 22 0.6% 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

14,505,508 14,505,508 0.0%
Uops executed

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

630,329,289 4,345.4% 630,329,289 4,345.4% 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.

216 216 0.0%
Optimizer successes

The number of traces that were successfully optimized.

216 100.0% 216 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 21 9.7% 21 9.7% 0.0%
<= 32 45 20.8% 45 20.8% 0.0%
<= 64 84 38.9% 84 38.9% 0.0%
<= 128 66 30.6% 66 30.6% 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 21 9.7% 21 9.7% 0.0%
<= 16 22 10.2% 22 10.2% 0.0%
<= 32 107 49.5% 107 49.5% 0.0%
<= 64 66 30.6% 66 30.6% 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 52,522,251 52,522,251 0.0%
_LOAD_FAST_0 48,336,998 48,336,998 0.0%
_CHECK_VALIDITY 38,799,527 38,799,527 0.0%
_GUARD_TYPE_VERSION 31,822,595 31,822,595 0.0%
_LOAD_ATTR_SLOT_0 31,048,908 31,048,908 0.0%
_CHECK_PERIODIC 20,298,810 20,298,810 0.0%
_CHECK_MANAGED_OBJECT_HAS_VALUES 20,284,202 20,284,202 0.0%
_LOAD_ATTR_INSTANCE_VALUE_0 20,284,202 20,284,202 0.0%
_GUARD_IS_FALSE_POP 17,722,730 17,722,730 0.0%
_TO_BOOL_BOOL 16,120,363 16,120,363 0.0%
_LOAD_FAST_3 16,120,363 16,120,363 0.0%
_LOAD_ATTR_METHOD_NO_DICT 15,524,454 15,524,454 0.0%
_MAKE_WARM 14,505,508 14,505,508 0.0%
_START_EXECUTOR 14,505,508 14,505,508 0.0%
_PUSH_FRAME 13,722,724 13,722,724 0.0%
_EXIT_TRACE 12,721,057 12,721,057 0.0%
_CHECK_FUNCTION_EXACT_ARGS 12,532,520 12,532,520 0.0%
_CHECK_FUNCTION_VERSION 12,532,520 12,532,520 0.0%
_SAVE_RETURN_OFFSET 12,532,520 12,532,520 0.0%
_STORE_FAST_3 12,531,747 12,531,747 0.0%
_GUARD_NOT_EXHAUSTED_RANGE 11,346,594 11,346,594 0.0%
_ITER_CHECK_RANGE 11,346,594 11,346,594 0.0%
_ITER_NEXT_RANGE 10,748,134 10,748,134 0.0%
_CHECK_STACK_SPACE_OPERAND 8,952,431 8,952,431 0.0%
_CHECK_VALIDITY_AND_SET_IP 8,952,431 8,952,431 0.0%
_RESUME_CHECK 8,949,661 8,949,661 0.0%
_INIT_CALL_PY_EXACT_ARGS_0 8,356,409 8,356,409 0.0%
_PUSH_NULL 8,353,845 8,353,845 0.0%
_LOAD_CONST_INLINE_BORROW 8,340,093 8,340,093 0.0%
_BUILD_LIST 7,762,227 7,762,227 0.0%
_CALL_INTRINSIC_1 7,762,227 7,762,227 0.0%
_LIST_EXTEND 7,762,227 7,762,227 0.0%
_CALL_METHOD_DESCRIPTOR_NOARGS 7,762,227 7,762,227 0.0%
_LOAD_ATTR 7,762,227 7,762,227 0.0%
_STORE_FAST 7,762,227 7,762,227 0.0%
_GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 7,160,404 7,160,404 0.0%
_GUARD_KEYS_VERSION 7,160,404 7,160,404 0.0%
_LOAD_ATTR_METHOD_WITH_VALUES 7,160,404 7,160,404 0.0%
_LOAD_FAST_1 5,362,186 5,362,186 0.0%
_LOAD_FAST_2 4,173,296 4,173,296 0.0%
_GUARD_IS_NONE_POP 4,159,651 4,159,651 0.0%
_CHECK_STACK_SPACE 3,580,089 3,580,089 0.0%
_BINARY_OP_SUBTRACT_INT 2,985,907 2,985,907 0.0%
_GUARD_NOS_INT 2,985,907 2,985,907 0.0%
_INIT_CALL_PY_EXACT_ARGS_1 2,985,907 2,985,907 0.0%
_TO_BOOL 1,786,059 1,786,059 0.0%
_DYNAMIC_EXIT 1,784,386 1,784,386 0.0%
_POP_TOP 1,783,545 1,783,545 0.0%
_RETURN_GENERATOR 1,190,204 1,190,204 0.0%
_GET_AWAITABLE 1,190,204 1,190,204 0.0%
_SEND_GEN_FRAME 1,190,204 1,190,204 0.0%
_LOAD_CONST_INLINE 1,183,236 1,183,236 0.0%
_GUARD_IS_TRUE_POP 779,601 779,601 0.0%
_TO_BOOL_LIST 595,909 595,909 0.0%
_INIT_CALL_PY_EXACT_ARGS_3 595,796 595,796 0.0%
_INIT_CALL_PY_EXACT_ARGS_2 594,408 594,408 0.0%
_GUARD_DORV_NO_DICT 592,981 592,981 0.0%
_STORE_ATTR_INSTANCE_VALUE 592,981 592,981 0.0%
_TIER2_RESUME_CHECK 591,638 591,638 0.0%
_CALL_KW_NON_PY 591,618 591,618 0.0%
_CHECK_FUNCTION 591,618 591,618 0.0%
_CHECK_IS_NOT_PY_CALLABLE_KW 591,618 591,618 0.0%
_DEOPT 65 65 0.0%
_GUARD_NOT_EXHAUSTED_TUPLE 1 1 0.0%
_ITER_CHECK_TUPLE 1 1 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,904 1,904 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: 2024-10-25