blob: 7438ace783e5c406fe2367bc298010dda59ec588 [file] [log] [blame]
import 'package:pool/pool.dart';
void main(List<String> args) async {
var poolSize = args.isEmpty ? 5 : int.parse(args.first);
print('Pool size: $poolSize');
final pool = Pool(poolSize);
final watch = Stopwatch()..start();
final start = DateTime.now();
DateTime lastLog;
Duration fastest;
int fastestIteration;
var i = 1;
void log(bool force) {
var now = DateTime.now();
if (force ||
lastLog == null ||
now.difference(lastLog) > const Duration(seconds: 1)) {
lastLog = now;
print([
now.difference(start),
i.toString().padLeft(10),
fastestIteration.toString().padLeft(7),
fastest.inMicroseconds.toString().padLeft(9)
].join(' '));
}
}
print(['Elapsed ', 'Iterations', 'Fastest', 'Time (us)'].join(' '));
for (;; i++) {
watch.reset();
var sum = await pool
.forEach<int, int>(Iterable<int>.generate(100000), (i) => i)
.reduce((a, b) => a + b);
assert(sum == 4999950000, 'was $sum');
var elapsed = watch.elapsed;
if (fastest == null || fastest > elapsed) {
fastest = elapsed;
fastestIteration = i;
log(true);
} else {
log(false);
}
}
}