diff options
author | Hans-Kristian Arntzen <post@arntzen-software.no> | 2022-07-06 12:36:41 +0300 |
---|---|---|
committer | Hans-Kristian Arntzen <post@arntzen-software.no> | 2022-07-06 13:44:58 +0300 |
commit | 02d9b6c61c7884cb11aa9bfd3656fa2028731295 (patch) | |
tree | 85d7f5e5f812ec8f96c7407b6f328a1aaa5ca78b | |
parent | b6aac42aa66a772ccd98fd94397136c37d241156 (diff) |
profiler: Add --delta to profile helper tool.profiling-improvements
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
-rw-r--r-- | programs/vkd3d-profile.py | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/programs/vkd3d-profile.py b/programs/vkd3d-profile.py index e978127a..b401e557 100644 --- a/programs/vkd3d-profile.py +++ b/programs/vkd3d-profile.py @@ -75,17 +75,35 @@ def main(): parser.add_argument('--per-iteration', action = 'store_true', help = 'Represent ticks in terms of ticks / iteration. Cannot be used with --divider.') parser.add_argument('--name', nargs = '+', type = str, help = 'Only display data for certain counters.') parser.add_argument('--sort', type = str, default = 'none', help = 'Sorts input data according to "iterations" or "ticks".') + parser.add_argument('--delta', type = str, help = 'Subtract iterations and timing from other profile blob.') parser.add_argument('profile', help = 'The profile binary blob.') args = parser.parse_args() if not args.profile: raise AssertionError('Need profile folder.') + delta_map = {} + if args.delta is not None: + with open(args.delta, 'rb') as f: + for block in iter(lambda: f.read(64), b''): + if is_valid_block(block): + b = parse_block(block) + delta_map[b.name] = b + blocks = [] with open(args.profile, 'rb') as f: for block in iter(lambda: f.read(64), b''): if is_valid_block(block): - blocks.append(parse_block(block)) + b = parse_block(block) + if b.name in delta_map: + d = delta_map[b.name] + b = ProfileCase(ticks = b.ticks - d.ticks, + iterations = b.iterations - d.iterations, + name = b.name) + if b.iterations < 0 or b.ticks < 0: + raise AssertionError('After subtracting, iterations or ticks became negative.') + if b.iterations > 0: + blocks.append(b) if args.divider is not None: if args.per_iteration: |