Commit df013946 by CaIon

feat(performance): add compact formatting for latency and throughput metrics

parent 208d86e9
...@@ -19,11 +19,7 @@ For commercial licensing, please contact support@quantumnous.com ...@@ -19,11 +19,7 @@ For commercial licensing, please contact support@quantumnous.com
import { memo } from 'react' import { memo } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
import { import { getSuccessRateDotClass } from '@/features/performance-metrics/lib/format'
formatLatency,
formatThroughput,
getSuccessRateDotClass,
} from '@/features/performance-metrics/lib/format'
export type ModelPerfBadgeData = { export type ModelPerfBadgeData = {
avg_latency_ms: number avg_latency_ms: number
...@@ -36,8 +32,21 @@ export interface ModelPerfBadgeProps extends React.HTMLAttributes<HTMLDivElement ...@@ -36,8 +32,21 @@ export interface ModelPerfBadgeProps extends React.HTMLAttributes<HTMLDivElement
perf: ModelPerfBadgeData | undefined perf: ModelPerfBadgeData | undefined
} }
function formatCompactNumber(value: number): string {
if (!Number.isFinite(value) || value <= 0) return '—'
return value > 1 ? String(Math.round(value)) : value.toFixed(1)
}
function formatCompactLatency(ms: number): string {
if (!Number.isFinite(ms) || ms <= 0) return '—'
if (ms >= 1_000) return `${formatCompactNumber(ms / 1_000)}s`
return `${formatCompactNumber(ms)}ms`
}
function formatCompactThroughput(tps: number): string { function formatCompactThroughput(tps: number): string {
return formatThroughput(tps).replace(' t/s', 'tps') if (!Number.isFinite(tps) || tps <= 0) return '—'
if (tps >= 1_000) return `${formatCompactNumber(tps / 1_000)}Ktps`
return `${formatCompactNumber(tps)}tps`
} }
export const ModelPerfBadge = memo(function ModelPerfBadge( export const ModelPerfBadge = memo(function ModelPerfBadge(
...@@ -73,7 +82,7 @@ export const ModelPerfBadge = memo(function ModelPerfBadge( ...@@ -73,7 +82,7 @@ export const ModelPerfBadge = memo(function ModelPerfBadge(
{t('Latency short')} {t('Latency short')}
</div> </div>
<div className='text-muted-foreground/80 font-mono text-xs leading-4 whitespace-nowrap'> <div className='text-muted-foreground/80 font-mono text-xs leading-4 whitespace-nowrap'>
{avg_latency_ms > 0 ? formatLatency(avg_latency_ms) : '—'} {formatCompactLatency(avg_latency_ms)}
</div> </div>
</div> </div>
<div title={t('Throughput')} className='min-w-0'> <div title={t('Throughput')} className='min-w-0'>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment