inline_benchmarker 1.0.0

  • Example
  • Installing
  • Versions
  • 42

About #

InlineBenchmarker is an easy to use inline benchmarking system.
The goal of inline benchmarking is to help you find bottle-necks in your application, rather than to benchmark abstract units.
Therefor Dart's benchmark harness library would probably be better suited.
Inline benchmarks can be used in projects that are otherwise hard to benchmark (perhaps because they are too much of a spaghetti), or to monitor alghorithms on how they respond with production processes and data.

How To: Using The Benchmarker #

Benchmarking Methods #

void loginMethod()
  Benchmark loginBenchmark = Benchmarker.generate("loginBenchmark");
  // Perform login logic
Explanation of Code: #
Output: #
[DEFAULT] loginBenchmark: Runtime: 1000 us
Explanation of Output: #

µs is an abbreviation for microseconds.

Benchmarking Loops #

void calculateMethod()
  Benchmark calculationBenchmark = Benchmarker.generate("calculationBenchmark", autoRun: false);
  for (int i = 0; i < 100 ; i++)
    // Perform calculation logic
Explanation of Code: #
  • Setting autoRun to false will prevent the benchmark from running instantly.
  • Benchmarks can be started manually using the start() method
Output: #
[DEFAULT] calculationBenchmark:
› (1/100) Runtime: 10 us
› (2/100) Runtime: 10 us
› (3/100) Runtime: 10 us
› (100/100) Runtime: 10 us

Explanation of Output: #

Using Group and Indentation Parameters #

For more complex applications, which combine nested methods and loops, it might be useful to format the output text using the group and indentation parameters.

void calculateMethod()
  Benchmark calculateMethodBenchmark  = Benchmarker.generate("Calculation Benchmark", group: 'CALCULATION');
  Benchmark calculateLoopBenchmark    = Benchmarker.generate("Calculation Loop Benchmark", group: 'CALCULATION', indentation: 1, autoStart: false);
  for (int i = 0; i < 100 ; i++)
    // Perform calculation logic
  calculateMethodBenchmark.stop(); 'CALCULATION');

void calculateOtherStuffMethod()
  Benchmark calculateOtherStuffMethodBenchmark  = Benchmarker.generate("Calculate Other Stuff Benchmark", group: 'CALCULATION', indentation: 2);
  // Perform other calculation logic
Explanation of Code: #
  • The group parameter will group benchmarks together in the output console.
  • When no group is specified, a 'DEFAULT' group will be created
  • The indentation parameter will indent the output with the number of tabs specified
Output: #
[CALCULATION] Calculation Benchmark: Runtime: 10000 us
  [CALCULATION] Calculation Loop Benchmark:
  › (1/100) Runtime: 10 us
    [CALCULATION] Calculate Other Stuff Benchmark: Runtime: 10 us
  › (2/100) Runtime: 10 us
    [CALCULATION] Calculate Other Stuff Benchmark: Runtime: 10 us
  › (3/100) Runtime: 10 us
    [CALCULATION] Calculate Other Stuff Benchmark: Runtime: 10 us
  › (100/100) Runtime: 10 us
    [CALCULATION] Calculate Other Stuff Benchmark: Runtime: 10 us

How To: Disabling Benchmarks #

When you are running in production mode, you probably don't want the benchmarks running constantly. A better option would be to give your application the ability to enable/disable benchmarks (perhaps by passing a URL parameter, in the case of a web application).

Disabling benchmarks is very easy:

Output: #
Enable benchmarks to produce a report

Info #

For more info about this project, contact:


import 'package:inline_benchmarker/inline_benchmarker.dart';

void main() {

void runMyStuff() {
  Benchmark runMyStuffBenchmark =
      Benchmarker.generate('runMyStuff', group: 'MAIN');
  Benchmark forLoopBenchmark = Benchmarker.generate('forLoop', autoRun: false);

  for (int i = 0; i < 100; i++) {

  runMyStuffBenchmark.stop(); 'MAIN');;

void runMyOtherStuff() {
  Benchmark runMyOtherStuffBenchmark =
      Benchmarker.generate('runMyOtherStuff', indentation: 1, group: 'MAIN');


Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

  inline_benchmarker: ^1.0.0

2. Install it

You can install packages from the command line:

with pub:

$ pub get

with Flutter:

$ flutter pub get

Alternatively, your editor might support pub get or flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:inline_benchmarker/inline_benchmarker.dart';
Version Uploaded Documentation Archive
1.0.0 Sep 4, 2018 Go to the documentation of inline_benchmarker 1.0.0 Download inline_benchmarker 1.0.0 archive
0.1.1 Aug 14, 2015 Go to the documentation of inline_benchmarker 0.1.1 Download inline_benchmarker 0.1.1 archive
0.1.0 Aug 14, 2015 Go to the documentation of inline_benchmarker 0.1.0 Download inline_benchmarker 0.1.0 archive
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

We analyzed this package on Jun 21, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.3.2
  • pana: 0.12.18


Detected platforms: Flutter, web, other

No platform restriction found in primary library package:inline_benchmarker/inline_benchmarker.dart.

Health suggestions

Fix lib/src/api/benchmarker.dart. (-1.49 points)

Analysis of lib/src/api/benchmarker.dart reported 3 hints:

line 26 col 37: Use = to separate a named parameter from its default value.

line 26 col 57: Use = to separate a named parameter from its default value.

line 44 col 35: Use = to separate a named parameter from its default value.

Maintenance issues and suggestions

Provide a file named (-20 points)

Changelog entries help developers follow the progress of your package. See the example generated by stagehand.

The package description is too short. (-20 points)

Add more detail to the description field of pubspec.yaml. Use 60 to 180 characters to describe the package, what it does, and its target use case.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0-dev <3.0.0