Skip to content

Commit 9a4e2b1

Browse files
jwrencommit-bot@chromium.org
authored andcommitted
Add an additional completion metric into completion_metrics.dart: 'use old vs new relevance rank comparison'
Change-Id: I21eb1447dd6c833870158717031a01d7e8f253c2 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/153485 Commit-Queue: Jaime Wren <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent c4a2efd commit 9a4e2b1

File tree

1 file changed

+31
-14
lines changed

1 file changed

+31
-14
lines changed

pkg/analysis_server/tool/completion_metrics/completion_metrics.dart

+31-14
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ const String SKIP_OLD_RELEVANCE = 'skip-old-relevance';
9595
/// A flag that causes additional output to be produced.
9696
const String VERBOSE = 'verbose';
9797

98+
/// A [Counter] to track the performance of the new relevance to the old
99+
/// relevance.
100+
Counter oldVsNewComparison =
101+
Counter('use old vs new relevance rank comparison');
102+
98103
/// Create a parser that can be used to parse the command-line arguments.
99104
ArgParser createArgParser() {
100105
return ArgParser()
@@ -477,6 +482,12 @@ class CompletionMetricsComputer {
477482
printMetrics(metricsOldMode);
478483
}
479484
printMetrics(metricsNewMode);
485+
486+
print('');
487+
print('====================');
488+
oldVsNewComparison.printCounterValues();
489+
print('====================');
490+
480491
if (verbose) {
481492
printWorstResults(metricsNewMode);
482493
printSlowestResults(metricsNewMode);
@@ -485,7 +496,7 @@ class CompletionMetricsComputer {
485496
return resultCode;
486497
}
487498

488-
bool forEachExpectedCompletion(
499+
int forEachExpectedCompletion(
489500
CompletionRequestImpl request,
490501
MetricsSuggestionListener listener,
491502
ExpectedCompletion expectedCompletion,
@@ -496,14 +507,14 @@ class CompletionMetricsComputer {
496507
bool doPrintMissedCompletions) {
497508
assert(suggestions != null);
498509

499-
var successfulCompletion;
510+
var rank;
500511

501512
var place = placementInSuggestionList(suggestions, expectedCompletion);
502513

503514
metrics.mrrComputer.addRank(place.rank);
504515

505516
if (place.denominator != 0) {
506-
successfulCompletion = true;
517+
rank = place.rank;
507518

508519
metrics.completionCounter.count('successful');
509520

@@ -518,7 +529,7 @@ class CompletionMetricsComputer {
518529
metrics.insertionLengthTheoretical
519530
.addValue(expectedCompletion.completion.length - charsBeforeTop);
520531
} else {
521-
successfulCompletion = false;
532+
rank = -1;
522533

523534
metrics.completionCounter.count('unsuccessful');
524535

@@ -544,7 +555,7 @@ class CompletionMetricsComputer {
544555
print('');
545556
}
546557
}
547-
return successfulCompletion;
558+
return rank;
548559
}
549560

550561
void printMetrics(CompletionMetrics metrics) {
@@ -864,7 +875,7 @@ class CompletionMetricsComputer {
864875
// and results are collected with varying settings for
865876
// comparison:
866877

867-
Future<bool> handleExpectedCompletion(
878+
Future<int> handleExpectedCompletion(
868879
{MetricsSuggestionListener listener,
869880
@required CompletionMetrics metrics,
870881
@required bool printMissedCompletions,
@@ -910,33 +921,39 @@ class CompletionMetricsComputer {
910921

911922
// First we compute the completions useNewRelevance set to
912923
// false:
913-
var oldRelevanceSucceeded = false;
924+
var oldRank;
914925
if (!skipOldRelevance) {
915-
oldRelevanceSucceeded = await handleExpectedCompletion(
926+
oldRank = await handleExpectedCompletion(
916927
metrics: metricsOldMode,
917928
printMissedCompletions: false,
918929
useNewRelevance: false);
919930
}
920931

921932
// And again here with useNewRelevance set to true:
922933
var listener = MetricsSuggestionListener();
923-
var newRelevanceSucceeded = await handleExpectedCompletion(
934+
var newRank = await handleExpectedCompletion(
924935
listener: listener,
925936
metrics: metricsNewMode,
926937
printMissedCompletions: verbose,
927938
useNewRelevance: true);
928939

929-
if (!skipOldRelevance &&
930-
verbose &&
931-
oldRelevanceSucceeded != newRelevanceSucceeded) {
932-
if (newRelevanceSucceeded) {
940+
if (!skipOldRelevance && newRank != -1 && oldRank != -1) {
941+
if (newRank <= oldRank) {
942+
oldVsNewComparison.count('new relevance');
943+
} else {
944+
oldVsNewComparison.count('old relevance');
945+
}
946+
}
947+
948+
if (!skipOldRelevance && verbose) {
949+
if (newRank > 0 && oldRank < 0) {
933950
print(' ===========');
934951
print(
935952
' The `useNewRelevance = true` generated a completion that `useNewRelevance = false` did not:');
936953
print(' $expectedCompletion');
937954
print(' ===========');
938955
print('');
939-
} else {
956+
} else if (newRank < 0 && oldRank > 0) {
940957
print(' ===========');
941958
print(
942959
' The `useNewRelevance = false` generated a completion that `useNewRelevance = true` did not:');

0 commit comments

Comments
 (0)