summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
authorMichael Droettboom <mdboom@gmail.com>2024-03-16 15:10:43 (GMT)
committerGitHub <noreply@github.com>2024-03-16 15:10:43 (GMT)
commit1a33513f99bf4a9e5122b9cd82945879e73ff44c (patch)
tree57742b32b62216e4678087bfebf2acfd5866aa88 /Tools
parentbee7e290cdedb17e06f473a2f318c720ba766852 (diff)
downloadcpython-1a33513f99bf4a9e5122b9cd82945879e73ff44c.zip
cpython-1a33513f99bf4a9e5122b9cd82945879e73ff44c.tar.gz
cpython-1a33513f99bf4a9e5122b9cd82945879e73ff44c.tar.bz2
gh-116879: Add new optimizer pystats to tables (GH-116880)
Diffstat (limited to 'Tools')
-rw-r--r--Tools/scripts/summarize_stats.py34
1 files changed, 30 insertions, 4 deletions
diff --git a/Tools/scripts/summarize_stats.py b/Tools/scripts/summarize_stats.py
index 2925e09..6af14e1 100644
--- a/Tools/scripts/summarize_stats.py
+++ b/Tools/scripts/summarize_stats.py
@@ -459,10 +459,7 @@ class Stats:
"The number of times a potential trace is identified. Specifically, this "
"occurs in the JUMP BACKWARD instruction when the counter reaches a "
"threshold.",
- ): (
- attempts,
- None,
- ),
+ ): (attempts, None),
Doc(
"Traces created", "The number of traces that were successfully created."
): (created, attempts),
@@ -512,6 +509,26 @@ class Stats:
),
}
+ def get_optimizer_stats(self) -> dict[str, tuple[int, int | None]]:
+ attempts = self._data["Optimization optimizer attempts"]
+ successes = self._data["Optimization optimizer successes"]
+ no_memory = self._data["Optimization optimizer failure no memory"]
+
+ return {
+ Doc(
+ "Optimizer attempts",
+ "The number of times the trace optimizer (_Py_uop_analyze_and_optimize) was run.",
+ ): (attempts, None),
+ Doc(
+ "Optimizer successes",
+ "The number of traces that were successfully optimized.",
+ ): (successes, attempts),
+ Doc(
+ "Optimizer no memory",
+ "The number of optimizations that failed due to no memory.",
+ ): (no_memory, attempts),
+ }
+
def get_histogram(self, prefix: str) -> list[tuple[int, int]]:
rows = []
for k, v in self._data.items():
@@ -1118,6 +1135,14 @@ def optimization_section() -> Section:
for label, (value, den) in optimization_stats.items()
]
+ def calc_optimizer_table(stats: Stats) -> Rows:
+ optimizer_stats = stats.get_optimizer_stats()
+
+ return [
+ (label, Count(value), Ratio(value, den))
+ for label, (value, den) in optimizer_stats.items()
+ ]
+
def calc_histogram_table(key: str, den: str) -> RowCalculator:
def calc(stats: Stats) -> Rows:
histogram = stats.get_histogram(key)
@@ -1159,6 +1184,7 @@ def optimization_section() -> Section:
return
yield Table(("", "Count:", "Ratio:"), calc_optimization_table, JoinMode.CHANGE)
+ yield Table(("", "Count:", "Ratio:"), calc_optimizer_table, JoinMode.CHANGE)
for name, den in [
("Trace length", "Optimization traces created"),
("Optimized trace length", "Optimization traces created"),