Skip to content

Latest commit

 

History

History
6477 lines (5877 loc) · 114 KB

bm-20240615-azure-x86_64-python-a19bb261a327e1008f21-3.13.0b2+-a19bb26-pystats-generators.md

File metadata and controls

6477 lines (5877 loc) · 114 KB

Pystats results

  • benchmark: generators
  • fork: python
  • ref: a19bb261a327e1008f219b62f6465941c981899b
  • commit hash: a19bb26
  • commit date: 2024-06-15T19:10:50+00:00

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 Count Self Cumulative Miss ratio
RESUME_CHECK 558,068,400 17.7% 17.7% 0.0%
YIELD_VALUE 502,065,040 15.9% 33.6%
SEND_GEN 502,064,600 15.9% 49.5%
JUMP_BACKWARD_NO_INTERRUPT 470,064,240 14.9% 64.5%
LOAD_FAST 184,009,440 5.8% 70.3%
LOAD_ATTR_INSTANCE_VALUE 128,002,700 4.1% 74.4%
POP_TOP 96,002,400 3.0% 77.4%
LOAD_CONST 80,005,600 2.5% 79.9%
POP_JUMP_IF_FALSE 80,003,360 2.5% 82.5%
STORE_FAST 56,003,120 1.8% 84.2%
RETURN_CONST 48,002,560 1.5% 85.8%
LOAD_FAST_LOAD_FAST 40,004,000 1.3% 87.0%
TO_BOOL_NONE 32,277,120 1.0% 88.1% 45.2%
TO_BOOL_ALWAYS_TRUE 32,275,340 1.0% 89.1% 45.2%
INTERPRETER_EXIT 32,001,720 1.0% 90.1%
RETURN_GENERATOR 32,000,800 1.0% 91.1%
END_SEND 32,000,400 1.0% 92.1%
GET_YIELD_FROM_ITER 32,000,400 1.0% 93.1%
ENTER_EXECUTOR 31,999,660 1.0% 94.2%
LOAD_GLOBAL_MODULE 24,002,640 0.8% 94.9%
STORE_ATTR_INSTANCE_VALUE 24,002,340 0.8% 95.7%
LOAD_GLOBAL_BUILTIN 16,002,100 0.5% 96.2%
RETURN_VALUE 16,001,740 0.5% 96.7%
CALL_LEN 16,001,740 0.5% 97.2%
COMPARE_OP_INT 16,001,740 0.5% 97.7%
CALL_PY_EXACT_ARGS 16,001,680 0.5% 98.2%
BINARY_SLICE 16,001,600 0.5% 98.7%
BINARY_OP 8,003,020 0.3% 99.0%
BINARY_SUBSCR 8,002,940 0.3% 99.2%
EXIT_INIT_CHECK 8,000,780 0.3% 99.5%
BINARY_OP_ADD_INT 8,000,780 0.3% 99.7%
CALL_ALLOC_AND_ENTER_INIT 8,000,780 0.3% 100.0%
JUMP_BACKWARD 660 0.0% 100.0%
FOR_ITER_GEN 620 0.0% 100.0%
CALL 600 0.0% 100.0%
LOAD_GLOBAL 600 0.0% 100.0%
GET_ITER 400 0.0% 100.0%
PUSH_NULL 400 0.0% 100.0%
FOR_ITER_RANGE 380 0.0% 100.0%
CALL_BUILTIN_CLASS 360 0.0% 100.0%
END_FOR 320 0.0% 100.0%
LOAD_ATTR 320 0.0% 100.0%
LOAD_DEREF 240 0.0% 100.0%
CALL_NON_PY_GENERAL 180 0.0% 100.0%
LOAD_ATTR_MODULE 180 0.0% 100.0%
RESUME 160 0.0% 100.0% 2,462.5%
CALL_FUNCTION_EX 160 0.0% 100.0%
COMPARE_OP 140 0.0% 100.0%
STORE_ATTR 120 0.0% 100.0%
NOP 80 0.0% 100.0%
TO_BOOL 80 0.0% 100.0%
BUILD_LIST 80 0.0% 100.0%
CALL_INTRINSIC_1 80 0.0% 100.0%
COPY_FREE_VARS 80 0.0% 100.0%
FOR_ITER 80 0.0% 100.0%
LIST_EXTEND 80 0.0% 100.0%
POP_JUMP_IF_TRUE 80 0.0% 100.0%
SEND 80 0.0% 100.0%
BINARY_OP_SUBTRACT_FLOAT 60 0.0% 100.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.

Pair Count Self Cumulative
YIELD_VALUE YIELD_VALUE 470,064,240 14.9% 14.9%
JUMP_BACKWARD_NO_INTERRUPT SEND_GEN 470,064,220 14.9% 29.8%
RESUME_CHECK JUMP_BACKWARD_NO_INTERRUPT 470,064,200 14.9% 44.7%
SEND_GEN RESUME_CHECK 470,064,200 14.9% 59.6%
LOAD_FAST LOAD_ATTR_INSTANCE_VALUE 128,002,600 4.1% 63.7%
POP_TOP LOAD_FAST 52,972,480 1.7% 65.4%
POP_JUMP_IF_FALSE LOAD_FAST 51,030,320 1.6% 67.0%
LOAD_FAST LOAD_CONST 32,003,360 1.0% 68.0%
TO_BOOL_NONE POP_JUMP_IF_FALSE 32,001,680 1.0% 69.0%
LOAD_ATTR_INSTANCE_VALUE TO_BOOL_NONE 32,001,640 1.0% 70.0%
CACHE RETURN_GENERATOR 32,000,800 1.0% 71.1%
RETURN_GENERATOR INTERPRETER_EXIT 32,000,800 1.0% 72.1%
POP_TOP RESUME_CHECK 32,000,780 1.0% 73.1%
LOAD_ATTR_INSTANCE_VALUE YIELD_VALUE 32,000,780 1.0% 74.1%
RESUME_CHECK POP_TOP 32,000,780 1.0% 75.1%
RESUME_CHECK LOAD_FAST 32,000,780 1.0% 76.1%
END_SEND POP_TOP 32,000,400 1.0% 77.1%
GET_YIELD_FROM_ITER LOAD_CONST 32,000,400 1.0% 78.2%
RETURN_CONST END_SEND 32,000,400 1.0% 79.2%
LOAD_ATTR_INSTANCE_VALUE GET_YIELD_FROM_ITER 32,000,360 1.0% 80.2%
SEND_GEN POP_TOP 32,000,360 1.0% 81.2%
LOAD_CONST SEND_GEN 32,000,340 1.0% 82.2%
YIELD_VALUE STORE_FAST 31,999,980 1.0% 83.2%
LOAD_ATTR_INSTANCE_VALUE TO_BOOL_ALWAYS_TRUE 31,999,880 1.0% 84.2%
TO_BOOL_ALWAYS_TRUE POP_JUMP_IF_FALSE 31,999,880 1.0% 85.3%
ENTER_EXECUTOR RESUME_CHECK 31,999,660 1.0% 86.3%
STORE_FAST ENTER_EXECUTOR 31,999,660 1.0% 87.3%
POP_JUMP_IF_FALSE RETURN_CONST 28,973,040 0.9% 88.2%
LOAD_FAST_LOAD_FAST STORE_ATTR_INSTANCE_VALUE 24,002,280 0.8% 89.0%
STORE_FAST LOAD_FAST 16,002,160 0.5% 89.5%
LOAD_GLOBAL_BUILTIN LOAD_FAST 16,001,800 0.5% 90.0%
RESUME_CHECK LOAD_GLOBAL_BUILTIN 16,001,760 0.5% 90.5%
CALL_LEN STORE_FAST 16,001,740 0.5% 91.0%
COMPARE_OP_INT POP_JUMP_IF_FALSE 16,001,740 0.5% 91.5%
LOAD_CONST COMPARE_OP_INT 16,001,720 0.5% 92.0%
LOAD_FAST CALL_LEN 16,001,720 0.5% 92.5%
CALL_PY_EXACT_ARGS RESUME_CHECK 16,001,680 0.5% 93.0%
STORE_ATTR_INSTANCE_VALUE LOAD_FAST_LOAD_FAST 16,001,560 0.5% 93.5%
BINARY_SLICE CALL_PY_EXACT_ARGS 16,001,520 0.5% 94.0%
POP_TOP RETURN_CONST 11,028,720 0.3% 94.4%
RETURN_VALUE RETURN_VALUE 8,000,860 0.3% 94.7%
LOAD_CONST BINARY_OP 8,000,840 0.3% 94.9%
STORE_FAST LOAD_GLOBAL_MODULE 8,000,840 0.3% 95.2%
BINARY_OP STORE_FAST 8,000,800 0.3% 95.4%
LOAD_CONST BINARY_SLICE 8,000,800 0.3% 95.7%
LOAD_CONST LOAD_FAST 8,000,800 0.3% 95.9%
LOAD_FAST BINARY_SLICE 8,000,800 0.3% 96.2%
LOAD_FAST_LOAD_FAST BINARY_SUBSCR 8,000,800 0.3% 96.4%
LOAD_FAST_LOAD_FAST LOAD_CONST 8,000,800 0.3% 96.7%
EXIT_INIT_CHECK RETURN_VALUE 8,000,780 0.3% 96.9%
RETURN_CONST EXIT_INIT_CHECK 8,000,780 0.3% 97.2%
BINARY_OP_ADD_INT LOAD_CONST 8,000,780 0.3% 97.4%
CALL_ALLOC_AND_ENTER_INIT RESUME_CHECK 8,000,780 0.3% 97.7%
LOAD_GLOBAL_MODULE LOAD_FAST 8,000,780 0.3% 98.0%
LOAD_GLOBAL_MODULE LOAD_FAST_LOAD_FAST 8,000,780 0.3% 98.2%
RESUME_CHECK LOAD_FAST_LOAD_FAST 8,000,780 0.3% 98.5%
STORE_ATTR_INSTANCE_VALUE RETURN_CONST 8,000,780 0.3% 98.7%
BINARY_SUBSCR LOAD_GLOBAL_MODULE 8,000,760 0.3% 99.0%
LOAD_CONST BINARY_OP_ADD_INT 8,000,760 0.3% 99.2%
LOAD_GLOBAL_MODULE LOAD_GLOBAL_MODULE 8,000,760 0.3% 99.5%
RETURN_CONST CALL_ALLOC_AND_ENTER_INIT 5,243,400 0.2% 99.6%
RETURN_VALUE LOAD_FAST_LOAD_FAST 5,243,280 0.2% 99.8%
RETURN_CONST LOAD_FAST_LOAD_FAST 2,757,520 0.1% 99.9%
RETURN_VALUE CALL_ALLOC_AND_ENTER_INIT 2,757,360 0.1% 100.0%
TO_BOOL_ALWAYS_TRUE TO_BOOL_NONE 275,460 0.0% 100.0%
TO_BOOL_NONE TO_BOOL_ALWAYS_TRUE 275,440 0.0% 100.0%
BINARY_SUBSCR BINARY_SUBSCR 2,140 0.0% 100.0%
BINARY_OP BINARY_OP 2,140 0.0% 100.0%
YIELD_VALUE INTERPRETER_EXIT 820 0.0% 100.0%
CACHE RESUME_CHECK 780 0.0% 100.0%
LOAD_FAST GET_ITER 400 0.0% 100.0%
STORE_FAST JUMP_BACKWARD 340 0.0% 100.0%
END_FOR POP_TOP 320 0.0% 100.0%
POP_TOP JUMP_BACKWARD 320 0.0% 100.0%
RETURN_CONST END_FOR 320 0.0% 100.0%
FOR_ITER_GEN RESUME_CHECK 320 0.0% 100.0%
GET_ITER FOR_ITER_GEN 300 0.0% 100.0%
JUMP_BACKWARD FOR_ITER_GEN 300 0.0% 100.0%
JUMP_BACKWARD FOR_ITER_RANGE 300 0.0% 100.0%
FOR_ITER_GEN POP_TOP 300 0.0% 100.0%
FOR_ITER_RANGE STORE_FAST 300 0.0% 100.0%
LOAD_FAST LOAD_ATTR 200 0.0% 100.0%
LOAD_ATTR_MODULE PUSH_NULL 180 0.0% 100.0%
LOAD_GLOBAL_BUILTIN LOAD_CONST 180 0.0% 100.0%
PUSH_NULL LOAD_FAST 160 0.0% 100.0%
LOAD_DEREF PUSH_NULL 160 0.0% 100.0%
LOAD_GLOBAL LOAD_GLOBAL_MODULE 160 0.0% 100.0%
LOAD_GLOBAL LOAD_GLOBAL_BUILTIN 140 0.0% 100.0%
PUSH_NULL CALL 120 0.0% 100.0%
PUSH_NULL CALL_NON_PY_GENERAL 120 0.0% 100.0%
CALL CALL_BUILTIN_CLASS 120 0.0% 100.0%
LOAD_CONST CALL 120 0.0% 100.0%
LOAD_CONST CALL_BUILTIN_CLASS 120 0.0% 100.0%
LOAD_FAST_LOAD_FAST STORE_ATTR 120 0.0% 100.0%
STORE_FAST LOAD_GLOBAL 120 0.0% 100.0%
LOAD_GLOBAL_MODULE LOAD_ATTR_MODULE 120 0.0% 100.0%
CACHE POP_TOP 100 0.0% 100.0%
LOAD_ATTR LOAD_ATTR_INSTANCE_VALUE 100 0.0% 100.0%
LOAD_GLOBAL LOAD_GLOBAL 100 0.0% 100.0%
RETURN_CONST INTERPRETER_EXIT 100 0.0% 100.0%

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.

BINARY_SLICE

Successors and predecessors for BINARY_SLICE
Predecessors Count Percentage
LOAD_CONST 8,000,800 50.0%
LOAD_FAST 8,000,800 50.0%
Successors Count Percentage
CALL_PY_EXACT_ARGS 16,001,520 100.0%
CALL 80 0.0%

CACHE

Successors and predecessors for CACHE
Successors Count Percentage
RETURN_GENERATOR 32,000,800 100.0%
RESUME_CHECK 780 0.0%
POP_TOP 100 0.0%
RESUME 40 0.0%

BINARY_SUBSCR

Successors and predecessors for BINARY_SUBSCR
Predecessors Count Percentage
LOAD_FAST_LOAD_FAST 8,000,800 100.0%
BINARY_SUBSCR 2,140 0.0%
Successors Count Percentage
LOAD_GLOBAL_MODULE 8,000,760 100.0%
BINARY_SUBSCR 2,140 0.0%
LOAD_GLOBAL 40 0.0%

END_FOR

Successors and predecessors for END_FOR
Predecessors Count Percentage
RETURN_CONST 320 100.0%
Successors Count Percentage
POP_TOP 320 100.0%

END_SEND

Successors and predecessors for END_SEND
Predecessors Count Percentage
RETURN_CONST 32,000,400 100.0%
Successors Count Percentage
POP_TOP 32,000,400 100.0%

EXIT_INIT_CHECK

Successors and predecessors for EXIT_INIT_CHECK
Predecessors Count Percentage
RETURN_CONST 8,000,780 100.0%
Successors Count Percentage
RETURN_VALUE 8,000,780 100.0%

GET_ITER

Successors and predecessors for GET_ITER
Predecessors Count Percentage
LOAD_FAST 400 100.0%
Successors Count Percentage
FOR_ITER_GEN 300 75.0%
FOR_ITER_RANGE 60 15.0%
FOR_ITER 40 10.0%

GET_YIELD_FROM_ITER

Successors and predecessors for GET_YIELD_FROM_ITER
Predecessors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 32,000,360 100.0%
LOAD_ATTR 40 0.0%
Successors Count Percentage
LOAD_CONST 32,000,400 100.0%

INTERPRETER_EXIT

Successors and predecessors for INTERPRETER_EXIT
Predecessors Count Percentage
RETURN_GENERATOR 32,000,800 100.0%
YIELD_VALUE 820 0.0%
RETURN_CONST 100 0.0%

NOP

Successors and predecessors for NOP
Predecessors Count Percentage
POP_TOP 80 100.0%
Successors Count Percentage
LOAD_DEREF 80 100.0%

POP_TOP

Successors and predecessors for POP_TOP
Predecessors Count Percentage
RESUME_CHECK 32,000,780 33.3%
END_SEND 32,000,400 33.3%
SEND_GEN 32,000,360 33.3%
END_FOR 320 0.0%
FOR_ITER_GEN 300 0.0%
Successors Count Percentage
LOAD_FAST 52,972,480 55.2%
RESUME_CHECK 32,000,780 33.3%
RETURN_CONST 11,028,720 11.5%
JUMP_BACKWARD 320 0.0%
NOP 80 0.0%

PUSH_NULL

Successors and predecessors for PUSH_NULL
Predecessors Count Percentage
LOAD_ATTR_MODULE 180 45.0%
LOAD_DEREF 160 40.0%
LOAD_ATTR 60 15.0%
Successors Count Percentage
LOAD_FAST 160 40.0%
CALL 120 30.0%
CALL_NON_PY_GENERAL 120 30.0%

RETURN_GENERATOR

Successors and predecessors for RETURN_GENERATOR
Predecessors Count Percentage
CACHE 32,000,800 100.0%
Successors Count Percentage
INTERPRETER_EXIT 32,000,800 100.0%

RETURN_VALUE

Successors and predecessors for RETURN_VALUE
Predecessors Count Percentage
RETURN_VALUE 8,000,860 50.0%
EXIT_INIT_CHECK 8,000,780 50.0%
BINARY_OP_SUBTRACT_FLOAT 60 0.0%
BINARY_OP 20 0.0%
CALL 20 0.0%
Successors Count Percentage
RETURN_VALUE 8,000,860 50.0%
LOAD_FAST_LOAD_FAST 5,243,280 32.8%
CALL_ALLOC_AND_ENTER_INIT 2,757,360 17.2%
STORE_FAST 80 0.0%
CALL 40 0.0%

TO_BOOL

Successors and predecessors for TO_BOOL
Predecessors Count Percentage
LOAD_ATTR 40 50.0%
LOAD_ATTR_INSTANCE_VALUE 40 50.0%
Successors Count Percentage
POP_JUMP_IF_FALSE 40 50.0%
TO_BOOL_ALWAYS_TRUE 20 25.0%
TO_BOOL_NONE 20 25.0%

BINARY_OP

Successors and predecessors for BINARY_OP
Predecessors Count Percentage
LOAD_CONST 8,000,840 100.0%
BINARY_OP 2,140 0.0%
LOAD_FAST 40 0.0%
Successors Count Percentage
STORE_FAST 8,000,800 100.0%
BINARY_OP 2,140 0.0%
RETURN_VALUE 20 0.0%
LOAD_CONST 20 0.0%
BINARY_OP_ADD_INT 20 0.0%

BUILD_LIST

Successors and predecessors for BUILD_LIST
Predecessors Count Percentage
LOAD_FAST 80 100.0%
Successors Count Percentage
LOAD_DEREF 80 100.0%

CALL

Successors and predecessors for CALL
Predecessors Count Percentage
PUSH_NULL 120 20.0%
LOAD_CONST 120 20.0%
BINARY_SLICE 80 13.3%
LOAD_FAST 80 13.3%
CALL 60 10.0%
Successors Count Percentage
CALL_BUILTIN_CLASS 120 20.0%
CALL_PY_EXACT_ARGS 80 13.3%
CALL 60 10.0%
STORE_FAST 60 10.0%
CALL_NON_PY_GENERAL 60 10.0%

CALL_FUNCTION_EX

Successors and predecessors for CALL_FUNCTION_EX
Predecessors Count Percentage
CALL_INTRINSIC_1 80 50.0%
LOAD_FAST 80 50.0%
Successors Count Percentage
COPY_FREE_VARS 80 50.0%
RESUME_CHECK 60 37.5%
RESUME 20 12.5%

CALL_INTRINSIC_1

Successors and predecessors for CALL_INTRINSIC_1
Predecessors Count Percentage
LIST_EXTEND 80 100.0%
Successors Count Percentage
CALL_FUNCTION_EX 80 100.0%

COMPARE_OP

Successors and predecessors for COMPARE_OP
Predecessors Count Percentage
CALL_BUILTIN_CLASS 60 42.9%
LOAD_CONST 40 28.6%
CALL 20 14.3%
COMPARE_OP 20 14.3%
Successors Count Percentage
POP_JUMP_IF_TRUE 80 57.1%
COMPARE_OP 20 14.3%
POP_JUMP_IF_FALSE 20 14.3%
COMPARE_OP_INT 20 14.3%

COPY_FREE_VARS

Successors and predecessors for COPY_FREE_VARS
Predecessors Count Percentage
CALL_FUNCTION_EX 80 100.0%
Successors Count Percentage
RESUME_CHECK 60 75.0%
RESUME 20 25.0%

ENTER_EXECUTOR

Successors and predecessors for ENTER_EXECUTOR
Predecessors Count Percentage
STORE_FAST 31,999,660 100.0%
Successors Count Percentage
RESUME_CHECK 31,999,660 100.0%

FOR_ITER

Successors and predecessors for FOR_ITER
Predecessors Count Percentage
GET_ITER 40 50.0%
JUMP_BACKWARD 40 50.0%
Successors Count Percentage
STORE_FAST 40 50.0%
FOR_ITER_GEN 20 25.0%
FOR_ITER_RANGE 20 25.0%

JUMP_BACKWARD

Successors and predecessors for JUMP_BACKWARD
Predecessors Count Percentage
STORE_FAST 340 51.5%
POP_TOP 320 48.5%
Successors Count Percentage
FOR_ITER_GEN 300 45.5%
FOR_ITER_RANGE 300 45.5%
FOR_ITER 40 6.1%
RESUME_CHECK 20 3.0%

JUMP_BACKWARD_NO_INTERRUPT

Successors and predecessors for JUMP_BACKWARD_NO_INTERRUPT
Predecessors Count Percentage
RESUME_CHECK 470,064,200 100.0%
RESUME 40 0.0%
Successors Count Percentage
SEND_GEN 470,064,220 100.0%
SEND 20 0.0%

LIST_EXTEND

Successors and predecessors for LIST_EXTEND
Predecessors Count Percentage
LOAD_DEREF 80 100.0%
Successors Count Percentage
CALL_INTRINSIC_1 80 100.0%

LOAD_ATTR

Successors and predecessors for LOAD_ATTR
Predecessors Count Percentage
LOAD_FAST 200 62.5%
LOAD_GLOBAL 60 18.8%
LOAD_GLOBAL_MODULE 60 18.8%
Successors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 100 31.2%
PUSH_NULL 60 18.8%
LOAD_ATTR_MODULE 60 18.8%
GET_YIELD_FROM_ITER 40 12.5%
TO_BOOL 40 12.5%

LOAD_CONST

Successors and predecessors for LOAD_CONST
Predecessors Count Percentage
LOAD_FAST 32,003,360 40.0%
GET_YIELD_FROM_ITER 32,000,400 40.0%
LOAD_FAST_LOAD_FAST 8,000,800 10.0%
BINARY_OP_ADD_INT 8,000,780 10.0%
LOAD_GLOBAL_BUILTIN 180 0.0%
Successors Count Percentage
SEND_GEN 32,000,340 40.0%
COMPARE_OP_INT 16,001,720 20.0%
BINARY_OP 8,000,840 10.0%
BINARY_SLICE 8,000,800 10.0%
LOAD_FAST 8,000,800 10.0%

LOAD_DEREF

Successors and predecessors for LOAD_DEREF
Predecessors Count Percentage
NOP 80 33.3%
BUILD_LIST 80 33.3%
RESUME_CHECK 60 25.0%
RESUME 20 8.3%
Successors Count Percentage
PUSH_NULL 160 66.7%
LIST_EXTEND 80 33.3%

LOAD_FAST

Successors and predecessors for LOAD_FAST
Predecessors Count Percentage
POP_TOP 52,972,480 28.8%
POP_JUMP_IF_FALSE 51,030,320 27.7%
RESUME_CHECK 32,000,780 17.4%
STORE_FAST 16,002,160 8.7%
LOAD_GLOBAL_BUILTIN 16,001,800 8.7%
Successors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 128,002,600 69.6%
LOAD_CONST 32,003,360 17.4%
CALL_LEN 16,001,720 8.7%
BINARY_SLICE 8,000,800 4.3%
GET_ITER 400 0.0%

LOAD_FAST_LOAD_FAST

Successors and predecessors for LOAD_FAST_LOAD_FAST
Predecessors Count Percentage
STORE_ATTR_INSTANCE_VALUE 16,001,560 40.0%
LOAD_GLOBAL_MODULE 8,000,780 20.0%
RESUME_CHECK 8,000,780 20.0%
RETURN_VALUE 5,243,280 13.1%
RETURN_CONST 2,757,520 6.9%
Successors Count Percentage
STORE_ATTR_INSTANCE_VALUE 24,002,280 60.0%
BINARY_SUBSCR 8,000,800 20.0%
LOAD_CONST 8,000,800 20.0%
STORE_ATTR 120 0.0%

LOAD_GLOBAL

Successors and predecessors for LOAD_GLOBAL
Predecessors Count Percentage
STORE_FAST 120 20.0%
LOAD_GLOBAL 100 16.7%
LOAD_GLOBAL_MODULE 60 10.0%
BINARY_SUBSCR 40 6.7%
RETURN_VALUE 40 6.7%
Successors Count Percentage
LOAD_GLOBAL_MODULE 160 26.7%
LOAD_GLOBAL_BUILTIN 140 23.3%
LOAD_GLOBAL 100 16.7%
LOAD_ATTR 60 10.0%
LOAD_CONST 60 10.0%

POP_JUMP_IF_FALSE

Successors and predecessors for POP_JUMP_IF_FALSE
Predecessors Count Percentage
TO_BOOL_NONE 32,001,680 40.0%
TO_BOOL_ALWAYS_TRUE 31,999,880 40.0%
COMPARE_OP_INT 16,001,740 20.0%
TO_BOOL 40 0.0%
COMPARE_OP 20 0.0%
Successors Count Percentage
LOAD_FAST 51,030,320 63.8%
RETURN_CONST 28,973,040 36.2%

POP_JUMP_IF_TRUE

Successors and predecessors for POP_JUMP_IF_TRUE
Predecessors Count Percentage
COMPARE_OP 80 100.0%
Successors Count Percentage
LOAD_GLOBAL 40 50.0%
LOAD_GLOBAL_BUILTIN 40 50.0%

RETURN_CONST

Successors and predecessors for RETURN_CONST
Predecessors Count Percentage
POP_JUMP_IF_FALSE 28,973,040 60.4%
POP_TOP 11,028,720 23.0%
STORE_ATTR_INSTANCE_VALUE 8,000,780 16.7%
STORE_ATTR 20 0.0%
Successors Count Percentage
END_SEND 32,000,400 66.7%
EXIT_INIT_CHECK 8,000,780 16.7%
CALL_ALLOC_AND_ENTER_INIT 5,243,400 10.9%
LOAD_FAST_LOAD_FAST 2,757,520 5.7%
END_FOR 320 0.0%

SEND

Successors and predecessors for SEND
Predecessors Count Percentage
LOAD_CONST 60 75.0%
JUMP_BACKWARD_NO_INTERRUPT 20 25.0%
Successors Count Percentage
POP_TOP 40 50.0%
SEND_GEN 40 50.0%

STORE_ATTR

Successors and predecessors for STORE_ATTR
Predecessors Count Percentage
LOAD_FAST_LOAD_FAST 120 100.0%
Successors Count Percentage
STORE_ATTR_INSTANCE_VALUE 60 50.0%
LOAD_FAST_LOAD_FAST 40 33.3%
RETURN_CONST 20 16.7%

STORE_FAST

Successors and predecessors for STORE_FAST
Predecessors Count Percentage
YIELD_VALUE 31,999,980 57.1%
CALL_LEN 16,001,740 28.6%
BINARY_OP 8,000,800 14.3%
FOR_ITER_RANGE 300 0.0%
RETURN_VALUE 80 0.0%
Successors Count Percentage
ENTER_EXECUTOR 31,999,660 57.1%
LOAD_FAST 16,002,160 28.6%
LOAD_GLOBAL_MODULE 8,000,840 14.3%
JUMP_BACKWARD 340 0.0%
LOAD_GLOBAL 120 0.0%

YIELD_VALUE

Successors and predecessors for YIELD_VALUE
Predecessors Count Percentage
YIELD_VALUE 470,064,240 93.6%
LOAD_ATTR_INSTANCE_VALUE 32,000,780 6.4%
LOAD_ATTR 20 0.0%
Successors Count Percentage
YIELD_VALUE 470,064,240 93.6%
STORE_FAST 31,999,980 6.4%
INTERPRETER_EXIT 820 0.0%

RESUME

Successors and predecessors for RESUME
Predecessors Count Percentage
CACHE 40 25.0%
SEND_GEN 40 25.0%
POP_TOP 20 12.5%
CALL 20 12.5%
CALL_FUNCTION_EX 20 12.5%
Successors Count Percentage
JUMP_BACKWARD_NO_INTERRUPT 40 25.0%
LOAD_GLOBAL 40 25.0%
POP_TOP 20 12.5%
LOAD_DEREF 20 12.5%
LOAD_FAST 20 12.5%

BINARY_OP_ADD_INT

Successors and predecessors for BINARY_OP_ADD_INT
Predecessors Count Percentage
LOAD_CONST 8,000,760 100.0%
BINARY_OP 20 0.0%
Successors Count Percentage
LOAD_CONST 8,000,780 100.0%

BINARY_OP_SUBTRACT_FLOAT

Successors and predecessors for BINARY_OP_SUBTRACT_FLOAT
Predecessors Count Percentage
LOAD_FAST 40 66.7%
BINARY_OP 20 33.3%
Successors Count Percentage
RETURN_VALUE 60 100.0%

CALL_ALLOC_AND_ENTER_INIT

Successors and predecessors for CALL_ALLOC_AND_ENTER_INIT
Predecessors Count Percentage
RETURN_CONST 5,243,400 65.5%
RETURN_VALUE 2,757,360 34.5%
CALL 20 0.0%
Successors Count Percentage
RESUME_CHECK 8,000,780 100.0%

CALL_BUILTIN_CLASS

Successors and predecessors for CALL_BUILTIN_CLASS
Predecessors Count Percentage
CALL 120 33.3%
LOAD_CONST 120 33.3%
RETURN_VALUE 40 11.1%
LOAD_FAST 40 11.1%
CALL_BUILTIN_CLASS 40 11.1%
Successors Count Percentage
CALL_PY_EXACT_ARGS 80 22.2%
CALL 60 16.7%
COMPARE_OP 60 16.7%
STORE_FAST 60 16.7%
CALL_BUILTIN_CLASS 40 11.1%

CALL_LEN

Successors and predecessors for CALL_LEN
Predecessors Count Percentage
LOAD_FAST 16,001,720 100.0%
CALL 20 0.0%
Successors Count Percentage
STORE_FAST 16,001,740 100.0%

CALL_NON_PY_GENERAL

Successors and predecessors for CALL_NON_PY_GENERAL
Predecessors Count Percentage
PUSH_NULL 120 66.7%
CALL 60 33.3%
Successors Count Percentage
POP_TOP 60 33.3%
LOAD_FAST 60 33.3%
STORE_FAST 60 33.3%

CALL_PY_EXACT_ARGS

Successors and predecessors for CALL_PY_EXACT_ARGS
Predecessors Count Percentage
BINARY_SLICE 16,001,520 100.0%
CALL 80 0.0%
CALL_BUILTIN_CLASS 80 0.0%
Successors Count Percentage
RESUME_CHECK 16,001,680 100.0%

COMPARE_OP_INT

Successors and predecessors for COMPARE_OP_INT
Predecessors Count Percentage
LOAD_CONST 16,001,720 100.0%
COMPARE_OP 20 0.0%
Successors Count Percentage
POP_JUMP_IF_FALSE 16,001,740 100.0%

FOR_ITER_GEN

Successors and predecessors for FOR_ITER_GEN
Predecessors Count Percentage
GET_ITER 300 48.4%
JUMP_BACKWARD 300 48.4%
FOR_ITER 20 3.2%
Successors Count Percentage
RESUME_CHECK 320 51.6%
POP_TOP 300 48.4%

FOR_ITER_RANGE

Successors and predecessors for FOR_ITER_RANGE
Predecessors Count Percentage
JUMP_BACKWARD 300 78.9%
GET_ITER 60 15.8%
FOR_ITER 20 5.3%
Successors Count Percentage
STORE_FAST 300 78.9%
LOAD_GLOBAL 40 10.5%
LOAD_GLOBAL_MODULE 40 10.5%

LOAD_ATTR_INSTANCE_VALUE

Successors and predecessors for LOAD_ATTR_INSTANCE_VALUE
Predecessors Count Percentage
LOAD_FAST 128,002,600 100.0%
LOAD_ATTR 100 0.0%
Successors Count Percentage
TO_BOOL_NONE 32,001,640 25.0%
YIELD_VALUE 32,000,780 25.0%
GET_YIELD_FROM_ITER 32,000,360 25.0%
TO_BOOL_ALWAYS_TRUE 31,999,880 25.0%
TO_BOOL 40 0.0%

LOAD_ATTR_MODULE

Successors and predecessors for LOAD_ATTR_MODULE
Predecessors Count Percentage
LOAD_GLOBAL_MODULE 120 66.7%
LOAD_ATTR 60 33.3%
Successors Count Percentage
PUSH_NULL 180 100.0%

LOAD_GLOBAL_BUILTIN

Successors and predecessors for LOAD_GLOBAL_BUILTIN
Predecessors Count Percentage
RESUME_CHECK 16,001,760 100.0%
LOAD_GLOBAL 140 0.0%
LOAD_GLOBAL_MODULE 80 0.0%
POP_JUMP_IF_TRUE 40 0.0%
CALL_BUILTIN_CLASS 40 0.0%
Successors Count Percentage
LOAD_FAST 16,001,800 100.0%
LOAD_CONST 180 0.0%
LOAD_GLOBAL 40 0.0%
LOAD_GLOBAL_BUILTIN 40 0.0%
LOAD_GLOBAL_MODULE 40 0.0%

LOAD_GLOBAL_MODULE

Successors and predecessors for LOAD_GLOBAL_MODULE
Predecessors Count Percentage
STORE_FAST 8,000,840 33.3%
BINARY_SUBSCR 8,000,760 33.3%
LOAD_GLOBAL_MODULE 8,000,760 33.3%
LOAD_GLOBAL 160 0.0%
RETURN_VALUE 40 0.0%
Successors Count Percentage
LOAD_FAST 8,000,780 33.3%
LOAD_FAST_LOAD_FAST 8,000,780 33.3%
LOAD_GLOBAL_MODULE 8,000,760 33.3%
LOAD_ATTR_MODULE 120 0.0%
LOAD_GLOBAL_BUILTIN 80 0.0%

RESUME_CHECK

Successors and predecessors for RESUME_CHECK
Predecessors Count Percentage
SEND_GEN 470,064,200 84.2%
POP_TOP 32,000,780 5.7%
ENTER_EXECUTOR 31,999,660 5.7%
CALL_PY_EXACT_ARGS 16,001,680 2.9%
CALL_ALLOC_AND_ENTER_INIT 8,000,780 1.4%
Successors Count Percentage
JUMP_BACKWARD_NO_INTERRUPT 470,064,200 84.2%
POP_TOP 32,000,780 5.7%
LOAD_FAST 32,000,780 5.7%
LOAD_GLOBAL_BUILTIN 16,001,760 2.9%
LOAD_FAST_LOAD_FAST 8,000,780 1.4%

SEND_GEN

Successors and predecessors for SEND_GEN
Predecessors Count Percentage
JUMP_BACKWARD_NO_INTERRUPT 470,064,220 93.6%
LOAD_CONST 32,000,340 6.4%
SEND 40 0.0%
Successors Count Percentage
RESUME_CHECK 470,064,200 93.6%
POP_TOP 32,000,360 6.4%
RESUME 40 0.0%

STORE_ATTR_INSTANCE_VALUE

Successors and predecessors for STORE_ATTR_INSTANCE_VALUE
Predecessors Count Percentage
LOAD_FAST_LOAD_FAST 24,002,280 100.0%
STORE_ATTR 60 0.0%
Successors Count Percentage
LOAD_FAST_LOAD_FAST 16,001,560 66.7%
RETURN_CONST 8,000,780 33.3%

TO_BOOL_ALWAYS_TRUE

Successors and predecessors for TO_BOOL_ALWAYS_TRUE
Predecessors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 31,999,880 99.1%
TO_BOOL_NONE 275,440 0.9%
TO_BOOL 20 0.0%
Successors Count Percentage
POP_JUMP_IF_FALSE 31,999,880 99.1%
TO_BOOL_NONE 275,460 0.9%

TO_BOOL_NONE

Successors and predecessors for TO_BOOL_NONE
Predecessors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 32,001,640 99.1%
TO_BOOL_ALWAYS_TRUE 275,460 0.9%
TO_BOOL 20 0.0%
Successors Count Percentage
POP_JUMP_IF_FALSE 32,001,680 99.1%
TO_BOOL_ALWAYS_TRUE 275,440 0.9%

Specialization stats

Specialization stats by family

BINARY_OP

specialization stats for BINARY_OP family
Kind Count Ratio
deferred

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

8,000,840 50.0%
hit

Specialized instructions that complete.

8,000,840 50.0%
Success Count Ratio
Success 40 1.8%
Failure 2,140 98.2%
Failure kind Count Ratio
floor divide 2,140 100.0%

BINARY_SLICE

specialization stats for BINARY_SLICE family

BINARY_SUBSCR

specialization stats for BINARY_SUBSCR family
Kind Count Ratio
deferred

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

8,000,800 100.0%
Success Count Ratio
Success 0 0.0%
Failure 2,140 100.0%
Failure kind Count Ratio
sequence int 2,140 100.0%

CALL

specialization stats for CALL family
Kind Count Ratio
deferred

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

300 0.0%
hit

Specialized instructions that complete.

40,004,560 100.0%
Success Count Ratio
Success 300 100.0%
Failure 0 0.0%

COMPARE_OP

specialization stats for COMPARE_OP family
Kind Count Ratio
deferred

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

100 0.0%
hit

Specialized instructions that complete.

16,001,740 100.0%
Success Count Ratio
Success 20 50.0%
Failure 20 50.0%
Failure kind Count Ratio
list 20 100.0%

FOR_ITER

specialization stats for FOR_ITER family
Kind Count Ratio
deferred

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

40 3.7%
hit

Specialized instructions that complete.

1,000 92.6%
Success Count Ratio
Success 40 100.0%
Failure 0 0.0%

LOAD_ATTR

specialization stats for LOAD_ATTR family
Kind Count Ratio
deferred

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

160 0.0%
hit

Specialized instructions that complete.

128,002,880 100.0%
Success Count Ratio
Success 160 100.0%
Failure 0 0.0%

LOAD_GLOBAL

specialization stats for LOAD_GLOBAL family
Kind Count Ratio
deferred

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

300 0.0%
hit

Specialized instructions that complete.

40,004,740 100.0%
Success Count Ratio
Success 300 100.0%
Failure 0 0.0%

POP_JUMP_IF_FALSE

specialization stats for POP_JUMP_IF_FALSE family

POP_JUMP_IF_TRUE

specialization stats for POP_JUMP_IF_TRUE family

SEND

specialization stats for SEND family
Kind Count Ratio
deferred

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

40 0.0%
hit

Specialized instructions that complete.

502,064,600 100.0%
Success Count Ratio
Success 40 100.0%
Failure 0 0.0%

STORE_ATTR

specialization stats for STORE_ATTR family
Kind Count Ratio
deferred

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

60 0.0%
hit

Specialized instructions that complete.

24,002,340 100.0%
Success Count Ratio
Success 60 100.0%
Failure 0 0.0%

TO_BOOL

specialization stats for TO_BOOL family
Kind Count Ratio
deferred

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

28,648,380 61.1%
hit

Specialized instructions that complete.

17,677,260 37.7%
miss

Specialized instructions that deopt.

29,199,240 62.3%
Success Count Ratio
Success 550,940 100.0%
Failure 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 Count Ratio
Basic

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

1,660,164,640 52.7%
Not specialized

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

112,013,020 3.6%
Specialized hits

Specialized instructions, e.g. LOAD_ATTR_MODULE that complete.

1,351,500,560 42.9%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

29,203,180 0.9%

Deferred by instruction

Breakdown of deferred (not specialized) instruction counts by family
Name Count Ratio
TO_BOOL 28,648,380 64.2%
BINARY_OP 8,000,840 17.9%
BINARY_SUBSCR 8,000,800 17.9%
CALL 300 0.0%
LOAD_GLOBAL 300 0.0%
LOAD_ATTR 160 0.0%
COMPARE_OP 100 0.0%
STORE_ATTR 60 0.0%
FOR_ITER 40 0.0%
SEND 40 0.0%

Misses by instruction

Breakdown of misses (specialized deopts) instruction counts by family
Name Count Ratio
TO_BOOL_NONE 14,599,860 50.0%
TO_BOOL_ALWAYS_TRUE 14,599,380 50.0%
RESUME 3,940 0.0%
RESUME_CHECK 3,940 0.0%
CACHE 0 0.0%
END_FOR 0 0.0%
END_SEND 0 0.0%
EXIT_INIT_CHECK 0 0.0%
GET_ITER 0 0.0%
GET_YIELD_FROM_ITER 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.

Count Ratio
Calls to PyEval_EvalDefault 32,001,720 5.4%
Calls to Python functions inlined 558,067,640 94.6%
Calls via PyEval_EvalFrame (total) 32,001,720 5.4%
Calls via PyEval_EvalFrame (vector) 32,000,820 5.4%
Calls via PyEval_EvalFrame (generator) 900 0.0%
Calls via PyEval_EvalFrame (legacy) 0 0.0%
Calls via PyEval_EvalFrame (function vectorcall) 32,000,820 5.4%
Calls via PyEval_EvalFrame (build class) 0 0.0%
Calls via PyEval_EvalFrame (slot) 0 0.0%
Calls via PyEval_EvalFrame (function ex) 160 0.0%
Calls via PyEval_EvalFrame (api) 32,000,800 5.4%
Calls via PyEval_EvalFrame (method) 0 0.0%
Frame objects created 0 0.0%
Frames pushed 64,004,300 10.8%

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.

Count Ratio
Allocations from freelist 340 0.0%
Frees to freelist 1,080
Allocations 96,031,360 100.0%
Allocations to 512 bytes 96,031,360 100.0%
Allocations to 4 kbytes 0 0.0%
Allocations over 4 kbytes 0 0.0%
Frees 96,032,447
Inline values 8,000,800
Interpreter increfs 512,062,880 92.7%
Interpreter decrefs 576,108,980 86.7%
Increfs 40,209,320 7.3%
Decrefs 88,201,947 13.3%
Materialize dict (on request) 0 0.0%
Materialize dict (new key) 0 0.0%
Materialize dict (too big) 0 0.0%
Materialize dict (str subclass) 0 0.0%
Method cache hits 300
Method cache misses 80
Method cache collisions 80
Method cache dunder hits 32,002,980
Method cache dunder misses 80

GC stats

GC collections and effectiveness

Collected/visits gives some measure of efficiency.

Generation Collections Objects collected Object visits
0 0 0 0
1 0 1,920 98,264,380
2 0 0 0

Optimization (Tier 2) stats

statistics about the Tier 2 optimizer
Count Ratio
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.

7,920
Traces created

The number of traces that were successfully created.

20 0.3%
Trace stack overflow

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

0 0.0%
Trace stack underflow

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

0 0.0%
Trace too long

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

0 0.0%
Trace too short

A potential trace is abandoced because it it too short.

7,900 99.7%
Inner loop found

A trace is truncated because it has an inner loop

7,900 99.7%
Recursive call

A trace is truncated because it has a recursive call.

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%
Executors invalidated

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

0 0.0%
Traces executed

The number of traces that were executed

31,999,680
Uops executed

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

191,998,080 600.0%
Count Ratio
Optimizer attempts

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

20
Optimizer successes

The number of traces that were successfully optimized.

20 100.0%
Optimizer no memory

The number of optimizations that failed due to no memory.

0 0.0%
Remove globals builtins changed

The builtins changed during optimization

0 0.0%
Remove globals incorrect keys

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

0 0.0%

Trace length histogram

trace length histogram
Range Count Ratio
<= 1 0 0.0%
<= 2 0 0.0%
<= 4 0 0.0%
<= 8 0 0.0%
<= 16 20 100.0%

Optimized trace length histogram

optimized trace length histogram
Range Count Ratio
<= 1 0 0.0%
<= 2 0 0.0%
<= 4 0 0.0%
<= 8 20 100.0%

Trace run length histogram

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

Uop execution stats

uop execution stats
Name Count Self Cumulative Miss ratio
_SET_IP 31,999,680 16.7% 16.7%
_DYNAMIC_EXIT 31,999,680 16.7% 33.3%
_FOR_ITER_GEN_FRAME 31,999,680 16.7% 50.0%
_PUSH_FRAME 31,999,680 16.7% 66.7%
_START_EXECUTOR 31,999,680 16.7% 83.3%
_TIER2_RESUME_CHECK 31,999,680 16.7% 100.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.

Pair Count Self Cumulative
_SET_IP _FOR_ITER_GEN_FRAME 31,999,680 16.7% 16.7%
_FOR_ITER_GEN_FRAME _PUSH_FRAME 31,999,680 16.7% 33.3%
_PUSH_FRAME _DYNAMIC_EXIT 31,999,680 16.7% 50.0%
_START_EXECUTOR _TIER2_RESUME_CHECK 31,999,680 16.7% 66.7%
_TIER2_RESUME_CHECK _SET_IP 31,999,680 16.7% 83.3%

Unsupported opcodes

unsupported opcodes

Optimizer errored out with opcode

Optimization stopped after encountering this opcode

Rare events

Counts of rare/unlikely events
Event Count
set class

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

0
set bases

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

0
set eval frame func

Setting the PEP 523 frame eval function _PyInterpreterState_SetFrameEvalFunc()

0
builtin dict

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

0
func modification

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

0
watched dict modification

A watched dict has been modified

0
watched globals modification

A watched globals() dict has been modified

0

Meta stats

Meta statistics
Count
Number of data files 20

Stats gathered on: 2024-06-16