diff options
author | kuzmich321 <kuzmich321@yandex-team.com> | 2023-12-05 11:07:52 +0300 |
---|---|---|
committer | kuzmich321 <kuzmich321@yandex-team.com> | 2023-12-05 12:12:06 +0300 |
commit | 27c5889c53eb79bbb5af840f8dca9af826c0cd08 (patch) | |
tree | be0c13d96820aad7627644caa2938badc107d06c /library/python/import_tracing/lib/converters/raw.py | |
parent | 35dbdd727c05367b340b5d47585458adf47253eb (diff) | |
download | ydb-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.py | 56 |
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, + ) + ) |