Skip to content

Commit 2782939

Browse files
committed
Fixing benchmark
1 parent 4a5e424 commit 2782939

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

app/bin/tools/isolate_search_benchmark.dart

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import 'dart:math';
66

77
import 'package:_pub_shared/search/search_form.dart';
8+
import 'package:collection/collection.dart';
89
import 'package:pub_dev/search/search_service.dart';
910
import 'package:pub_dev/service/entrypoint/_isolate.dart';
1011
import 'package:pub_dev/service/entrypoint/search_index.dart';
@@ -42,19 +43,29 @@ Future<void> main(List<String> args) async {
4243

4344
Future<void> _benchmark(IsolateRunner primary, IsolateRunner reduced) async {
4445
final index = IsolateSearchIndex(primary, reduced);
45-
final sw = Stopwatch()..start();
46-
for (var i = 0; i < 10; i++) {
46+
final durations = <String, List<int>>{};
47+
for (var i = 0; i < 100; i++) {
4748
final random = Random(i);
4849
final items = queries
49-
.expand((q) => List.generate(10, (_) => q))
5050
.map((q) => ServiceSearchQuery.parse(
5151
query: q,
5252
tagsPredicate: TagsPredicate.regularSearch(),
5353
))
5454
.toList();
5555
items.shuffle(random);
56-
await Future.wait(items.map((q) async => index.search(q)));
56+
await Future.wait(items.map((q) async {
57+
final sw = Stopwatch()..start();
58+
await index.search(q);
59+
final d = sw.elapsed.inMicroseconds;
60+
durations.putIfAbsent('all', () => []).add(d);
61+
final key = q.parsedQuery.hasFreeText ? 'primary' : 'reduced';
62+
durations.putIfAbsent(key, () => []).add(d);
63+
}));
64+
}
65+
for (final e in durations.entries) {
66+
e.value.sort();
67+
print('${e.key.padLeft(10)}: '
68+
'${e.value.average.round().toString().padLeft(10)} avg '
69+
'${e.value[e.value.length * 90 ~/ 100].toString().padLeft(10)} p90');
5770
}
58-
sw.stop();
59-
print(sw.elapsedMilliseconds);
6071
}

0 commit comments

Comments
 (0)