Skip to content

Latest commit

 

History

History
3150 lines (2914 loc) · 62.9 KB

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

File metadata and controls

3150 lines (2914 loc) · 62.9 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 28,260 4 -100.0%
LOAD_FAST 13,601,735 13,601,735 0.0%
RETURN_VALUE 13,126,539 13,126,539 0.0%
STORE_FAST 8,980,629 8,980,629 0.0%
LOAD_FAST_LOAD_FAST 8,580,961 8,580,961 0.0%
STORE_ATTR_INSTANCE_VALUE 8,390,446 8,390,446 0.0%
ENTER_EXECUTOR 4,572,838 4,572,838 0.0%
RESUME_CHECK 4,405,676 4,405,676 0.0%
POP_TOP 4,394,604 4,394,604 0.0%
CALL_PY_EXACT_ARGS 4,394,526 4,394,526 0.0%
EXIT_INIT_CHECK 4,365,898 4,365,898 0.0%
LOAD_CONST_IMMORTAL 4,244,071 4,244,071 0.0%
LOAD_ATTR_INSTANCE_VALUE 4,184,550 4,184,550 0.0%
LOAD_METHOD_WITH_VALUES 4,184,413 4,184,413 0.0%
PUSH_NULL 664,560 664,560 0.0%
LOAD_GLOBAL_MODULE 454,156 454,156 0.0%
FOR_ITER_RANGE 238,214 238,214 0.0%
CALL_ALLOC_AND_ENTER_INIT 235,663 235,663 0.0%
LOAD_SMALL_INT 210,117 210,117 0.0%
GET_ITER 210,048 210,048 0.0%
POP_JUMP_IF_FALSE 210,048 210,048 0.0%
CALL_BUILTIN_CLASS 210,045 210,045 0.0%
LOAD_GLOBAL_BUILTIN 210,045 210,045 0.0%
COMPARE_OP_INT 209,977 209,977 0.0%
LOAD_METHOD_NO_DICT 208,035 208,035 0.0%
CALL_LIST_APPEND 207,899 207,899 0.0%
POP_ITER 28,496 28,496 0.0%
LOAD_ATTR_MODULE 8,448 8,448 0.0%
CALL_NON_PY_GENERAL 4,360 4,360 0.0%
CALL_BUILTIN_FAST_WITH_KEYWORDS 4,156 4,156 0.0%
BUILD_LIST 2,148 2,148 0.0%
POP_JUMP_IF_NOT_NONE 2,148 2,148 0.0%
DELETE_FAST 2,079 2,079 0.0%
BINARY_OP_ADD_INT 2,078 2,078 0.0%
BINARY_OP_MULTIPLY_INT 2,078 2,078 0.0%
BINARY_OP_SUBTRACT_FLOAT 2,078 2,078 0.0%
BINARY_OP_ADD_FLOAT 2,075 2,075 0.0%
CALL 268 268 0.0%
LOAD_METHOD 185 185 0.0%
CALL_FUNCTION_EX 138 138 0.0%
BUILD_TUPLE 138 138 0.0%
LOAD_DEREF 138 138 0.0%
LOAD_CONST_MORTAL 136 136 0.0%
LOAD_ATTR 121 121 0.0%
TO_BOOL 112 112 0.0%
LOAD_GLOBAL 108 108 0.0%
FOR_ITER 77 77 0.0%
MAKE_FUNCTION 69 69 0.0%
NOP 69 69 0.0%
CALL_INTRINSIC_1 69 69 0.0%
COPY_FREE_VARS 69 69 0.0%
IS_OP 69 69 0.0%
JUMP_FORWARD 69 69 0.0%
LIST_EXTEND 69 69 0.0%
MAKE_CELL 69 69 0.0%
POP_JUMP_IF_TRUE 69 69 0.0%
SET_FUNCTION_ATTRIBUTE 69 69 0.0%
STORE_DEREF 69 69 0.0%
STORE_FAST_STORE_FAST 69 69 0.0%
BINARY_SUBSCR_TUPLE_INT 68 68 0.0%
CALL_METHOD_DESCRIPTOR_NOARGS 68 68 0.0%
CALL_METHOD_DESCRIPTOR_O 68 68 0.0%
CALL_PY_GENERAL 68 68 0.0%
TO_BOOL_BOOL 68 68 0.0%
UNPACK_SEQUENCE_TWO_TUPLE 68 68 0.0%
BINARY_SUBSCR 22 22 0.0%
UNPACK_SEQUENCE 22 22 0.0%
LOAD_CONST 17 17 0.0%
BINARY_OP 12 12 0.0%
RESUME 11 11 0.0%
STORE_ATTR 8 8 0.0%
COMPARE_OP 4 4 0.0%
INTERPRETER_EXIT 2 2 0.0%
JUMP_BACKWARD_JIT 28,260

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.

7 0.1% 7 0.1% 0.0%
hit

Specialized instructions that complete.

8,243 99.1% 8,243 99.1% 0.0%
miss

Specialized instructions that deopt.

66 0.8% 66 0.8% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 4 80.0% 4 80.0% 0.0%
Failure 1 20.0% 1 20.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
add different types 1 100.0% 1 100.0% 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.

1 1.1% 1 1.1% 0.0%
hit

Specialized instructions that complete.

68 75.6% 68 75.6% 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%

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.

24 0.0% 24 0.0% 0.0%
hit

Specialized instructions that complete.

9,364,281 100.0% 9,364,281 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 244 100.0% 244 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.

2 0.0% 2 0.0% 0.0%
hit

Specialized instructions that complete.

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

72 0.0% 72 0.0% 0.0%
hit

Specialized instructions that complete.

238,214 100.0% 238,214 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 3 60.0% 3 60.0% 0.0%
Failure 2 40.0% 2 40.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
dict values 2 100.0% 2 100.0% 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.

11 0.0% 11 0.0% 0.0%
hit

Specialized instructions that complete.

8,948,688 100.0% 8,948,688 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 110 100.0% 110 100.0% 0.0%
Failure 0 0.0% 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.

14 0.0% 14 0.0% 0.0%
hit

Specialized instructions that complete.

664,201 100.0% 664,201 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 94 100.0% 94 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.

76 41.1% 76 41.1% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 87 79.8% 87 79.8% 0.0%
Failure 22 20.2% 22 20.2% 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.

4 0.0% 4 0.0% 0.0%
hit

Specialized instructions that complete.

17,463,596 100.0% 17,463,596 100.0% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 4 100.0% 4 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.

70 38.9% 70 38.9% 0.0%
hit

Specialized instructions that complete.

68 37.8% 68 37.8% 0.0%
Success Base Count Base Ratio Head Count Head Ratio Change
Success 21 50.0% 21 50.0% 0.0%
Failure 21 50.0% 21 50.0% 0.0%
Failure kind Base Count Base Ratio Head Count Head Ratio Change
sequence 21 100.0% 21 100.0% 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.

1 1.1% 1 1.1% 0.0%
hit

Specialized instructions that complete.

68 75.6% 68 75.6% 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%

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.

31,801,345 35.0% 31,829,605 35.1% 0.1%
Basic

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

58,982,380 65.0% 58,954,124 64.9% -0.0%
Not specialized

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

939 0.0% 939 0.0% 0.0%
Specialized misses

Specialized instructions, e.g. LOAD_ATTR_MODULE that deopt.

2,188 0.0% 2,188 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_METHOD 76 27.0% 76 27.0% 0.0%
FOR_ITER 72 25.5% 72 25.5% 0.0%
TO_BOOL 70 24.8% 70 24.8% 0.0%
CALL 24 8.5% 24 8.5% 0.0%
LOAD_GLOBAL 14 5.0% 14 5.0% 0.0%
LOAD_ATTR 11 3.9% 11 3.9% 0.0%
BINARY_OP 7 2.5% 7 2.5% 0.0%
STORE_ATTR 4 1.4% 4 1.4% 0.0%
COMPARE_OP 2 0.7% 2 0.7% 0.0%
BINARY_SUBSCR 1 0.4% 1 0.4% 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 2,122 49.2% 2,122 49.2% 0.0%
RESUME_CHECK 2,122 49.2% 2,122 49.2% 0.0%
BINARY_OP_ADD_FLOAT 66 1.5% 66 1.5% 0.0%
CACHE 0 0.0% 0 0.0%
CALL_FUNCTION_EX 0 0.0% 0 0.0%
EXIT_INIT_CHECK 0 0.0% 0 0.0%
GET_ITER 0 0.0% 0 0.0%
MAKE_FUNCTION 0 0.0% 0 0.0%
NOP 0 0.0% 0 0.0%
POP_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 71 0.0% 71 0.0% 0.0%
Calls to Python functions inlined 8,942,191 100.0% 8,942,191 100.0% 0.0%
Calls via PyEval_EvalFrame (total) 71 0.0% 71 0.0% 0.0%
Calls via PyEval_EvalFrame (vector) 71 0.0% 71 0.0% 0.0%
Calls via PyEval_EvalFrame (generator) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (legacy) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (function vectorcall) 71 0.0% 71 0.0% 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) 69 0.0% 69 0.0% 0.0%
Calls via PyEval_EvalFrame (api) 0 0.0% 0 0.0%
Calls via PyEval_EvalFrame (method) 0 0.0% 0 0.0%
Frame objects created 0 0.0% 0 0.0%
Frames pushed 13,308,160 148.8% 13,308,160 148.8% 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 collisions 33 19 -42.4%
Method cache misses 41 35 -14.6%
Method cache hits 227 233 2.6%
Immortal increfs 4,782,513 4.8% 4,782,506 4.8% -0.0%
Immortal decrefs 10,098,851 7.7% 10,098,843 7.7% -0.0%
Frees 4,813,829 4,813,830 0.0%
Mortal increfs 40,136,789 40.6% 40,136,784 40.6% -0.0%
Mortal decrefs 39,925,283 30.5% 39,925,279 30.5% -0.0%
Allocations from freelist 2,300 0.0% 2,300 0.0% 0.0%
Frees to freelist 10,976 10,976 0.0%
Allocations 4,807,458 100.0% 4,807,458 100.0% 0.0%
Allocations to 512 bytes 4,807,414 100.0% 4,807,414 100.0% 0.0%
Allocations to 4 kbytes 44 0.0% 44 0.0% 0.0%
Allocations over 4 kbytes 0 0.0% 0 0.0%
Inline values 4,365,900 4,365,900 0.0%
Interpreter mortal increfs 52,971,787 53.5% 52,971,787 53.5% 0.0%
Interpreter mortal decrefs 57,993,622 44.3% 57,993,622 44.3% 0.0%
Interpreter immortal increfs 1,081,056 1.1% 1,081,056 1.1% 0.0%
Interpreter immortal decrefs 22,789,803 17.4% 22,789,803 17.4% 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%
Method cache dunder hits 2 2 0.0%
Method cache dunder misses 2 2 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 2,079 0 198,858,426 42,611,138 0 2,079 0 198,864,663 42,604,901 0
2 4,158 4,366,277 934,787,940 0 0 4,158 4,366,277 934,829,640 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.

1,145 1,145 0.0%
Traces created

The number of traces that were successfully created.

44 3.8% 44 3.8% 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,123 98.1% 1,123 98.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.

1,101 96.2% 1,101 96.2% 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.

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

The number of traces that were executed

8,878,503 8,878,503 0.0%
Uops executed

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

169,805,261 1,912.5% 169,805,261 1,912.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.

44 44 0.0%
Optimizer successes

The number of traces that were successfully optimized.

44 100.0% 44 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 23 52.3% 23 52.3% 0.0%
<= 64 21 47.7% 21 47.7% 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 0 0.0% 0 0.0%
<= 32 23 52.3% 23 52.3% 0.0%
<= 64 21 47.7% 21 47.7% 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 21,855,051 21,855,051 0.0%
_CHECK_VALIDITY 17,543,195 17,543,195 0.0%
_LOAD_CONST_INLINE_BORROW 13,428,104 13,428,104 0.0%
_LOAD_FAST_0 9,436,392 9,436,392 0.0%
_GUARD_DORV_NO_DICT 9,073,150 9,073,150 0.0%
_GUARD_TYPE_VERSION_AND_LOCK 9,073,150 9,073,150 0.0%
_STORE_ATTR_INSTANCE_VALUE 9,073,150 9,073,150 0.0%
_MAKE_WARM 8,878,503 8,878,503 0.0%
_START_EXECUTOR 8,878,503 8,878,503 0.0%
_EXIT_TRACE 4,746,150 4,746,150 0.0%
_TIER2_RESUME_CHECK 4,357,072 4,357,072 0.0%
_GUARD_NOT_EXHAUSTED_RANGE 4,339,810 4,339,810 0.0%
_CHECK_PERIODIC 4,339,810 4,339,810 0.0%
_ITER_CHECK_RANGE 4,339,810 4,339,810 0.0%
_PUSH_FRAME 4,311,856 4,311,856 0.0%
_PUSH_NULL 4,130,235 4,130,235 0.0%
_CHECK_AND_ALLOCATE_OBJECT 4,130,235 4,130,235 0.0%
_CHECK_FUNCTION 4,130,235 4,130,235 0.0%
_CREATE_INIT_FRAME 4,130,235 4,130,235 0.0%
_DYNAMIC_EXIT 4,130,235 4,130,235 0.0%
_ITER_NEXT_RANGE 4,130,235 4,130,235 0.0%
_LOAD_CONST_INLINE 4,130,235 4,130,235 0.0%
_STORE_FAST_3 4,130,235 4,130,235 0.0%
_POP_TOP 363,242 363,242 0.0%
_RETURN_VALUE 181,621 181,621 0.0%
_RESUME_CHECK 181,621 181,621 0.0%
_CHECK_FUNCTION_EXACT_ARGS 181,621 181,621 0.0%
_CHECK_FUNCTION_VERSION 181,621 181,621 0.0%
_CHECK_MANAGED_OBJECT_HAS_VALUES 181,621 181,621 0.0%
_CHECK_STACK_SPACE_OPERAND 181,621 181,621 0.0%
_GUARD_DORV_VALUES_INST_ATTR_FROM_DICT 181,621 181,621 0.0%
_GUARD_KEYS_VERSION 181,621 181,621 0.0%
_GUARD_TYPE_VERSION 181,621 181,621 0.0%
_INIT_CALL_PY_EXACT_ARGS_1 181,621 181,621 0.0%
_LOAD_ATTR_INSTANCE_VALUE 181,621 181,621 0.0%
_LOAD_FAST_1 181,621 181,621 0.0%
_LOAD_FAST_2 181,621 181,621 0.0%
_LOAD_METHOD_WITH_VALUES 181,621 181,621 0.0%
_SAVE_RETURN_OFFSET 181,621 181,621 0.0%
_DEOPT 2,118 2,118 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

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