42 lines
948 B
Dart
42 lines
948 B
Dart
import 'package:benchmark_harness/benchmark_harness.dart';
|
|
|
|
abstract class RateBenchmark extends BenchmarkBase {
|
|
RateBenchmark(String name, {this.runLength = 5000})
|
|
: super(name, emitter: RateEmitter()) {
|
|
(emitter as RateEmitter).benchmark = this;
|
|
}
|
|
|
|
final int runLength;
|
|
int _iterations = 0;
|
|
|
|
@override
|
|
ScoreEmitter get emitter => super.emitter;
|
|
|
|
@override
|
|
void exercise() {
|
|
_iterations = 0;
|
|
|
|
var watch = Stopwatch()..start();
|
|
while (watch.elapsedMilliseconds < runLength) {
|
|
run();
|
|
_iterations++;
|
|
}
|
|
}
|
|
}
|
|
|
|
class RateEmitter implements ScoreEmitter {
|
|
late RateBenchmark benchmark;
|
|
|
|
int get iterations => benchmark._iterations;
|
|
|
|
@override
|
|
void emit(String testName, double value) {
|
|
final ms = value / 1000;
|
|
final date = DateTime.now().toString().split('.')[0];
|
|
|
|
print('| $date | '
|
|
'$testName | '
|
|
'$iterations iterations | '
|
|
'${ms.toInt()} ms');
|
|
}
|
|
}
|