MCPcopy Create free account
hub / github.com/github/gh-aw / computeRunMetricsDiff

Function computeRunMetricsDiff

pkg/cli/audit_diff.go:507–585  ·  view source on GitHub ↗

computeRunMetricsDiff computes the diff of run-level metrics between two runs. Returns nil if no meaningful metrics data is available.

(summary1, summary2 *RunSummary)

Source from the content-addressed store, hash-verified

505// computeRunMetricsDiff computes the diff of run-level metrics between two runs.
506// Returns nil if no meaningful metrics data is available.
507func computeRunMetricsDiff(summary1, summary2 *RunSummary) *RunMetricsDiff {
508 var run1Tokens, run2Tokens int
509 var run1Duration, run2Duration time.Duration
510 var run1Turns, run2Turns int
511 var tu1, tu2 *TokenUsageSummary
512 var rl1, rl2 *GitHubRateLimitUsage
513 var m1, m2 *LogMetrics
514
515 if summary1 != nil {
516 run1Tokens = summary1.Run.TokenUsage
517 run1Duration = summary1.Run.Duration
518 run1Turns = summary1.Run.Turns
519 tu1 = summary1.TokenUsage
520 rl1 = summary1.GitHubRateLimitUsage
521 m1 = &summary1.Metrics
522 }
523 if summary2 != nil {
524 run2Tokens = summary2.Run.TokenUsage
525 run2Duration = summary2.Run.Duration
526 run2Turns = summary2.Run.Turns
527 tu2 = summary2.TokenUsage
528 rl2 = summary2.GitHubRateLimitUsage
529 m2 = &summary2.Metrics
530 }
531
532 // Skip if there is no meaningful data
533 hasTokenDetails := tu1 != nil || tu2 != nil
534 hasRateLimitDetails := rl1 != nil || rl2 != nil
535 if run1Tokens == 0 && run2Tokens == 0 && run1Duration == 0 && run2Duration == 0 && run1Turns == 0 && run2Turns == 0 && !hasTokenDetails && !hasRateLimitDetails {
536 return nil
537 }
538
539 diff := &RunMetricsDiff{
540 Run1TokenUsage: run1Tokens,
541 Run2TokenUsage: run2Tokens,
542 Run1Turns: run1Turns,
543 Run2Turns: run2Turns,
544 TurnsChange: run2Turns - run1Turns,
545 }
546
547 if run1Tokens > 0 || run2Tokens > 0 {
548 diff.TokenUsageChange = formatVolumeChange(run1Tokens, run2Tokens)
549 }
550
551 if run1Duration > 0 {
552 diff.Run1Duration = run1Duration.Round(time.Second).String()
553 }
554 if run2Duration > 0 {
555 diff.Run2Duration = run2Duration.Round(time.Second).String()
556 }
557 if run1Duration > 0 && run2Duration > 0 {
558 delta := run2Duration - run1Duration
559 if delta >= 0 {
560 diff.DurationChange = "+" + delta.Round(time.Second).String()
561 } else {
562 diff.DurationChange = delta.Round(time.Second).String()
563 }
564 }

Calls 6

formatVolumeChangeFunction · 0.85
computeTokenUsageDiffFunction · 0.85
computeToolCallsDiffFunction · 0.85
StringMethod · 0.45
PrintfMethod · 0.45