Skip to content

A timer and utils to count time spent on methods and calculations in Dart

License

Notifications You must be signed in to change notification settings

nicobritos/performance-timer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Performance Timer

Performance Timer is a package that allows you to time function and method calls, allowing for nesting/children timers, tracking real and own time spent inside each timer.

Also allows for printing the results or dumping them to Trace Event Format, which can then be parsed and analyzed by a lot of Trace analyzers, like Google Perfetto (https://ui.perfetto.dev/)

Features

  • Track time spent inside a method with timer.ownDuration and timer.child
  • Track all time spent since timer creation with timer.realDuration
  • Store additional data linked to each (root) timer with timer.setTag
  • Print results with PerformanceTimerSerializerString
  • Export results to TraceEventFormat with PerformanceTimerSerializerTraceEvent

Usage

  • Create a timer
final timer = PerformanceTimer(name: 'rootTimer', category: 'category', tags: {'key': 'value'});
// Do some work
timer.finish();
  • Create a nested/child timer
// Create a child event, which pause `timer.ownDuration`.
final child = timer.child('childTimer');
// Do some work
// ...
// Stop timer and signal parent to resume `timer.ownDuration`.
child.finish();
  • Measure a callback
await timer.measure(
  'childTimer',
  () async {
    // Do some work
  },
);
  • Add a tag
timer.setTag('result', '3');

// If setting a tag inside a child, then it
// sets it on the root timer (in this case, `timer`)
child.setTag('result', '3');
  • Remove a tag
timer.setTag('result');

// If removing a tag inside a child, then it
// removes it on the root timer (in this case, `timer`)
child.setTag('result');
  • Serialize the results
const stringSerializer = PerformanceTimerSerializerString();
print(await stringSerializer.serialize(timer));

const traceEventSerializer = PerformanceTimerSerializerTraceEvent();
print(jsonEncode(await traceEventSerializer.serialize(timer)));

About

A timer and utils to count time spent on methods and calculations in Dart

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages