aboutsummaryrefslogtreecommitdiffstats
path: root/library/python/import_tracing/lib/converters/raw.py
diff options
context:
space:
mode:
authorkuzmich321 <kuzmich321@yandex-team.com>2023-12-05 11:07:52 +0300
committerkuzmich321 <kuzmich321@yandex-team.com>2023-12-05 12:12:06 +0300
commit27c5889c53eb79bbb5af840f8dca9af826c0cd08 (patch)
treebe0c13d96820aad7627644caa2938badc107d06c /library/python/import_tracing/lib/converters/raw.py
parent35dbdd727c05367b340b5d47585458adf47253eb (diff)
downloadydb-27c5889c53eb79bbb5af840f8dca9af826c0cd08.tar.gz
import tracing
* add argument to parser * add out_path as fn parameter * set necessary env variables for import tracing
Diffstat (limited to 'library/python/import_tracing/lib/converters/raw.py')
-rw-r--r--library/python/import_tracing/lib/converters/raw.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/library/python/import_tracing/lib/converters/raw.py b/library/python/import_tracing/lib/converters/raw.py
new file mode 100644
index 0000000000..7c307a5984
--- /dev/null
+++ b/library/python/import_tracing/lib/converters/raw.py
@@ -0,0 +1,56 @@
+import library.python.import_tracing.lib.converters.base as base_converter
+import library.python.import_tracing.lib.constants as constants
+
+
+class RawTextTraceConverter(base_converter.BaseTraceConverter):
+ @staticmethod
+ def _get_columns_length(events):
+ max_filename = 0
+ max_cumtime = 0
+ max_end_time = 0
+
+ for event in events:
+ max_filename = max(max_filename, len(event.filename))
+ max_cumtime = max(max_cumtime, event.end_time - event.start_time)
+ max_end_time = max(max_end_time, event.end_time)
+
+ return len(str(max_cumtime)), max_filename, max_end_time
+
+ @staticmethod
+ def _get_sorted_events(events):
+ return sorted(events, key=lambda event: event.end_time - event.start_time, reverse=True)
+
+ @staticmethod
+ def _format_line(cumtime, filename, max_cumtime, max_filename):
+ return "{0:<{max_cumtime}}\t{1:<{max_filename}}\n".format(
+ cumtime,
+ filename,
+ max_cumtime=max_cumtime,
+ max_filename=max_filename,
+ )
+
+ def dump(self, events, filepath):
+ max_cumtime, max_filename, max_end_time = self._get_columns_length(events)
+ max_line_length = max_cumtime + max_filename
+
+ with open(filepath, "w") as file:
+ # total time taken
+ file.write("total time taken (seconds): {0:.4f}\n".format(max_end_time / constants.MCS_IN_SEC))
+ file.write("-" * max_line_length + "\n")
+
+ # header
+ file.write(self._format_line("cumtime", "filename", max_cumtime, max_filename))
+ file.write("-" * max_line_length + "\n")
+
+ # trace info
+ for event in self._get_sorted_events(events):
+ time_taken = format(((event.end_time - event.start_time) / constants.MCS_IN_SEC), ".6f")
+
+ file.write(
+ self._format_line(
+ time_taken,
+ event.filename,
+ max_cumtime,
+ max_filename,
+ )
+ )