Skip to content

Commit bb252c3

Browse files
committed
Refactor summary creation to utilize computed raw stats in Output classes
1 parent 9152c06 commit bb252c3

1 file changed

Lines changed: 13 additions & 9 deletions

File tree

python/dftracer/analyzer/output.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,16 @@ def __init__(
6767
def handle_result(self, result: AnalyzerResultType):
6868
raise NotImplementedError
6969

70-
def _create_summary(self, result: AnalyzerResultType, view_key: ViewKey) -> OutputSummary:
71-
flat_view = result.flat_views[view_key]
70+
def _compute_raw_stats(self, result: AnalyzerResultType) -> RawStats:
7271
raw_stats = dask.compute(result.raw_stats)[0]
7372
if isinstance(raw_stats, dict):
7473
raw_stats = RawStats(**raw_stats)
74+
return raw_stats
75+
76+
def _create_summary(self, result: AnalyzerResultType, view_key: ViewKey, raw_stats: Optional[RawStats] = None) -> OutputSummary:
77+
flat_view = result.flat_views[view_key]
78+
if raw_stats is None:
79+
raw_stats = self._compute_raw_stats(result)
7580
summary = OutputSummary(
7681
job_time=float(raw_stats.job_time),
7782
layer_metrics={},
@@ -165,11 +170,12 @@ def __init__(
165170
self.show_header = show_header
166171

167172
def handle_result(self, result: AnalyzerResultType):
173+
raw_stats = self._compute_raw_stats(result)
168174
print_objects = []
169175
for view_key in result.flat_views:
170176
if view_key[-1] not in result.view_types:
171177
continue
172-
summary = self._create_summary(result=result, view_key=view_key)
178+
summary = self._create_summary(result=result, view_key=view_key, raw_stats=raw_stats)
173179
summary_table = self._create_summary_table(summary=summary, view_key=view_key)
174180
layer_breakdown_table = self._create_layer_breakdown_table(summary=summary, view_key=view_key)
175181
print_objects.append(summary_table)
@@ -341,15 +347,16 @@ def __init__(
341347
self.file_path = file_path
342348

343349
def handle_result(self, result: AnalyzerResultType):
350+
raw_stats = self._compute_raw_stats(result)
344351
output = {
345352
"schema_version": "1",
346-
"raw_stats": self._create_raw_stats(result=result),
353+
"raw_stats": self._create_raw_stats(raw_stats=raw_stats),
347354
"views": {},
348355
}
349356
for view_key in result.flat_views:
350357
if view_key[-1] not in result.view_types:
351358
continue
352-
summary = self._create_summary(result=result, view_key=view_key)
359+
summary = self._create_summary(result=result, view_key=view_key, raw_stats=raw_stats)
353360
output["views"][view_name(view_key, separator="/")] = {
354361
"summary": self._create_summary_payload(summary=summary),
355362
"additional_metrics": self._create_additional_metrics_payload(result=result, view_key=view_key),
@@ -382,10 +389,7 @@ def _to_float_or_none(value):
382389
return None
383390
return float(value)
384391

385-
def _create_raw_stats(self, result: AnalyzerResultType):
386-
raw_stats = dask.compute(result.raw_stats)[0]
387-
if isinstance(raw_stats, dict):
388-
raw_stats = RawStats(**raw_stats)
392+
def _create_raw_stats(self, raw_stats: RawStats):
389393
return {
390394
"job_time_s": self._to_float_or_none(raw_stats.job_time),
391395
"time_granularity_s": self._to_float_or_none(raw_stats.time_granularity),

0 commit comments

Comments
 (0)