Skip to content

Commit 098e687

Browse files
committed
Fix stats
1 parent c84b039 commit 098e687

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

Python/specialize.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ print_spec_stats(FILE *out, OpcodeStats *stats)
134134
fprintf(out, "opcode[BINARY_SLICE].specializable : 1\n");
135135
fprintf(out, "opcode[STORE_SLICE].specializable : 1\n");
136136
for (int i = 0; i < 256; i++) {
137-
if (_PyOpcode_Caches[i]) {
137+
if (_PyOpcode_Caches[i] && i != JUMP_BACKWARD) {
138138
fprintf(out, "opcode[%s].specializable : 1\n", _PyOpcode_OpName[i]);
139139
}
140140
PRINT_STAT(i, specialization.success);

Tools/scripts/summarize_stats.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,8 @@ def kind_to_text(kind, defines, opname):
302302

303303
def categorized_counts(opcode_stats, specialized_instructions):
304304
basic = 0
305-
specialized = 0
305+
specialized_hits = 0
306+
specialized_misses = 0
306307
not_specialized = 0
307308
for name, opcode_stat in opcode_stats.items():
308309
if "execution_count" not in opcode_stat:
@@ -312,11 +313,11 @@ def categorized_counts(opcode_stats, specialized_instructions):
312313
not_specialized += count
313314
elif name in specialized_instructions:
314315
miss = opcode_stat.get("specialization.miss", 0)
315-
not_specialized += miss
316-
specialized += count - miss
316+
specialized_misses += miss
317+
specialized_hits += count - miss
317318
else:
318319
basic += count
319-
return basic, not_specialized, specialized
320+
return basic, not_specialized, specialized_hits, specialized_misses
320321

321322

322323
def print_title(name, level=2):
@@ -484,13 +485,14 @@ def emit_comparative_specialization_stats(
484485
def calculate_specialization_effectiveness(
485486
opcode_stats, total, specialized_instructions
486487
):
487-
basic, not_specialized, specialized = categorized_counts(
488+
basic, not_specialized, hits, misses = categorized_counts(
488489
opcode_stats, specialized_instructions
489490
)
490491
return [
491492
("Basic", basic, format_ratio(basic, total)),
492493
("Not specialized", not_specialized, format_ratio(not_specialized, total)),
493-
("Specialized", specialized, format_ratio(specialized, total)),
494+
("Specialized hits", hits, format_ratio(specialized, total)),
495+
("Specialized misses", misses, format_ratio(specialized, total)),
494496
]
495497

496498

@@ -510,6 +512,9 @@ def emit_specialization_overview(opcode_stats, total, specialized_instructions):
510512
# Avoid double counting misses
511513
if title == "Misses" and "specializable" in opcode_stat:
512514
continue
515+
# Deferred stats for RESUME are meaningless
516+
if title == "Deferred" and name == RESUME:
517+
continue
513518
value = opcode_stat.get(field, 0)
514519
counts.append((value, name))
515520
total += value

0 commit comments

Comments
 (0)