https://github.com/python/cpython/commit/1a33513f99bf4a9e5122b9cd82945879e73ff44c
commit: 1a33513f99bf4a9e5122b9cd82945879e73ff44c
branch: main
author: Michael Droettboom <[email protected]>
committer: Fidget-Spinner <[email protected]>
date: 2024-03-16T23:10:43+08:00
summary:

gh-116879: Add new optimizer pystats to tables (GH-116880)

files:
M Tools/scripts/summarize_stats.py

diff --git a/Tools/scripts/summarize_stats.py b/Tools/scripts/summarize_stats.py
index 2925e096f4d95e..6af14e1b769b80 100644
--- a/Tools/scripts/summarize_stats.py
+++ b/Tools/scripts/summarize_stats.py
@@ -459,10 +459,7 @@ def get_optimization_stats(self) -> dict[str, tuple[int, 
int | None]]:
                 "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 @@ def get_optimization_stats(self) -> dict[str, tuple[int, 
int | None]]:
             ),
         }
 
+    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 calc_optimization_table(stats: Stats) -> Rows:
             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 iter_optimization_tables(base_stats: Stats, 
head_stats: Stats | None = None)
             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"),

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to