Skip to content

Commit 786c319

Browse files
committed
BugFix: fix perceivedLatency being calculated incorrectly
The perceivedLatency is currently calculateand and sent when we send STE, by then lastUserModificationTime is no longer accurate. Instead calculate perceivedLatency when we show the suggestions and use the lastUserModificationTime at that time to be accurate.
1 parent 142761e commit 786c319

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

packages/core/src/codewhisperer/service/inlineCompletionItemProvider.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { ReferenceInlineProvider } from './referenceInlineProvider'
1212
import { ImportAdderProvider } from './importAdderProvider'
1313
import { application } from '../util/codeWhispererApplication'
1414
import path from 'path'
15+
import { vsCodeState } from '../indexNode'
1516

1617
export class CWInlineCompletionItemProvider implements vscode.InlineCompletionItemProvider {
1718
private activeItemIndex: number | undefined
@@ -169,6 +170,7 @@ export class CWInlineCompletionItemProvider implements vscode.InlineCompletionIt
169170
ImportAdderProvider.instance.onShowRecommendation(document, this.startPos.line, r)
170171
this.nextMove = 0
171172
TelemetryHelper.instance.setFirstSuggestionShowTime()
173+
session.setPerceivedLatency()
172174
this._onDidShow.fire()
173175
if (matchedCount >= 2 || this.nextToken !== '') {
174176
const result = [item]

packages/core/src/codewhisperer/util/codeWhispererSession.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
import { GenerateRecommendationsRequest, ListRecommendationsRequest, Recommendation } from '../client/codewhisperer'
1414
import { Position } from 'vscode'
1515
import { CodeWhispererSupplementalContext, vsCodeState } from '../models/model'
16+
import { resolveTransitionHooks } from 'vue'
1617

1718
class CodeWhispererSession {
1819
static #instance: CodeWhispererSession
@@ -43,6 +44,7 @@ class CodeWhispererSession {
4344
invokeSuggestionStartTime = 0
4445
timeToFirstRecommendation = 0
4546
firstSuggestionShowTime = 0
47+
perceivedLatency = 0
4648

4749
public static get instance() {
4850
return (this.#instance ??= new CodeWhispererSession())
@@ -91,6 +93,17 @@ class CodeWhispererSession {
9193
}
9294
}
9395

96+
setPerceivedLatency() {
97+
if (this.perceivedLatency !== 0) {
98+
return
99+
}
100+
if (this.triggerType === 'OnDemand') {
101+
this.perceivedLatency = this.timeToFirstRecommendation
102+
} else {
103+
this.perceivedLatency = this.firstSuggestionShowTime - vsCodeState.lastUserModificationTime
104+
}
105+
}
106+
94107
reset() {
95108
this.sessionId = ''
96109
this.requestContext = { request: {} as any, supplementalMetadata: {} as any }

packages/core/src/codewhisperer/util/telemetryHelper.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -325,9 +325,7 @@ export class TelemetryHelper {
325325
suggestionState: this.getSendTelemetrySuggestionState(aggregatedSuggestionState),
326326
recommendationLatencyMilliseconds: e2eLatency,
327327
triggerToResponseLatencyMilliseconds: session.timeToFirstRecommendation,
328-
perceivedLatencyMilliseconds: session.getPerceivedLatency(
329-
this.sessionDecisions[0].codewhispererTriggerType
330-
),
328+
perceivedLatencyMilliseconds: session.perceivedLatency,
331329
timestamp: new Date(Date.now()),
332330
suggestionReferenceCount: referenceCount,
333331
generatedLine: generatedLines,
@@ -388,6 +386,7 @@ export class TelemetryHelper {
388386
this.typeAheadLength = 0
389387
this.timeSinceLastModification = 0
390388
session.timeToFirstRecommendation = 0
389+
session.perceivedLatency = 0
391390
this.classifierResult = undefined
392391
this.classifierThreshold = undefined
393392
}

0 commit comments

Comments
 (0)