benchmark 0.2.0
benchmark: ^0.2.0 copied to clipboard
A full featured library for writing and running Dart benchmarks.
benchmark #
benchmark provides a standard way of writing and running benchmarks in Dart. Inspired by both benchmark_harness and test.
Writing Benchmarks. #
Benchmarks are specified using the top-level benchmark() function:
import 'package:benchmark/benchmark.dart';
void main() {
benchmark('List.generate(100k)', () {
List.generate(100000, (i) => i);
});
}
Benchmarks can be grouped together using the group() function. Each group's description is added to the beginning of its benchmark's descriptions:
import 'package:benchmark/benchmark.dart';
void main() {
group('List', () {
benchmark('.generate(100k)', () {
List.generate(100000, (i) => i);
});
});
group('Map', () {
benchmark('.unmodifiable(other)', () {
Map.unmodifiable({
'value': 1
});
}, iterations: 100);
});
}
You can use the setUp() and tearDown() functions to share code between benchmarks. The setUp() callback will run before every benchmark in a group, and tearDown() will run after:
import 'package:benchmark/benchmark.dart';
void main() {
List<int> list;
setUp(() {
list = List.generate(100000, (i) => i);
});
tearDown(() {
list = null;
});
benchmark('List(100k).forEach()', () {
list.forEach(() {});
});
}
You can use the setUpEach() and tearDownEach() functions to share code between iterations of benchmarks. The setUpEach() callback will run before every iteration in a benchmark, and tearDownEach() will run after:
import 'package:benchmark/benchmark.dart';
void main() {
List<int> list;
setUpEach(() {
list = List.generate(100000, (i) => i);
});
tearDownEach(() {
list = null;
});
benchmark('List(100k).map()', () {
list.map((i) => '$i');
});
}
Running benchmarks #
benchmark comes with a simple executable to automatically run all your benchmarks:
dart pub run benchmark
See the --help flag for more information.