From 6c635bd388a1f9cadfa01435582cbb248c647d61 Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 19 Apr 2022 14:58:32 +0700 Subject: [PATCH] TF-495 Create a `Benchmark` object to calculate rendering time --- core/lib/core.dart | 1 + core/lib/utils/benchmark.dart | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 core/lib/utils/benchmark.dart diff --git a/core/lib/core.dart b/core/lib/core.dart index f44c16fbb..372f7c165 100644 --- a/core/lib/core.dart +++ b/core/lib/core.dart @@ -26,6 +26,7 @@ export 'presentation/utils/html_transformer/transform_configuration.dart'; export 'presentation/utils/html_transformer/dom/add_tooltip_link_transformers.dart'; export 'data/utils/device_manager.dart'; export 'utils/app_logger.dart'; +export 'utils/benchmark.dart'; // Views export 'presentation/views/text/slogan_builder.dart'; diff --git a/core/lib/utils/benchmark.dart b/core/lib/utils/benchmark.dart new file mode 100644 index 000000000..4994ef674 --- /dev/null +++ b/core/lib/utils/benchmark.dart @@ -0,0 +1,29 @@ + +import 'package:core/utils/app_logger.dart'; + +class _Benchmark { + final Map _starts = {}; + + void start(dynamic id) { + final String benchId = id.toString(); + if (_starts.containsKey(benchId)) { + log('_Benchmark::start(): Benchmark already have comparing with id=$benchId in time'); + } else { + _starts[benchId] = DateTime.now().microsecondsSinceEpoch; + } + } + + double end(dynamic id) { + final String benchId = id.toString(); + if (!_starts.containsKey(benchId)) { + throw Exception('In Benchmark not placed comparing with id=$benchId'); + } + final double diff = (DateTime.now().microsecondsSinceEpoch - _starts[benchId]!) / 1000; + final String info = '$benchId need ${diff}ms'; + log('_Benchmark::end(): $info'); + _starts.remove(benchId); + return diff; + } +} + +final _Benchmark bench = _Benchmark(); \ No newline at end of file