| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package service
- import (
- "sort"
- "testing"
- )
- func buildOpenAISchedulerBenchmarkCandidates(size int) []openAIAccountCandidateScore {
- if size <= 0 {
- return nil
- }
- candidates := make([]openAIAccountCandidateScore, 0, size)
- for i := 0; i < size; i++ {
- accountID := int64(10_000 + i)
- candidates = append(candidates, openAIAccountCandidateScore{
- account: &Account{
- ID: accountID,
- Priority: i % 7,
- },
- loadInfo: &AccountLoadInfo{
- AccountID: accountID,
- LoadRate: (i * 17) % 100,
- WaitingCount: (i * 11) % 13,
- },
- score: float64((i*29)%1000) / 100,
- errorRate: float64((i * 5) % 100 / 100),
- ttft: float64(30 + (i*3)%500),
- hasTTFT: i%3 != 0,
- })
- }
- return candidates
- }
- func selectTopKOpenAICandidatesBySortBenchmark(candidates []openAIAccountCandidateScore, topK int) []openAIAccountCandidateScore {
- if len(candidates) == 0 {
- return nil
- }
- if topK <= 0 {
- topK = 1
- }
- ranked := append([]openAIAccountCandidateScore(nil), candidates...)
- sort.Slice(ranked, func(i, j int) bool {
- return isOpenAIAccountCandidateBetter(ranked[i], ranked[j])
- })
- if topK > len(ranked) {
- topK = len(ranked)
- }
- return ranked[:topK]
- }
- func BenchmarkOpenAIAccountSchedulerSelectTopK(b *testing.B) {
- cases := []struct {
- name string
- size int
- topK int
- }{
- {name: "n_16_k_3", size: 16, topK: 3},
- {name: "n_64_k_3", size: 64, topK: 3},
- {name: "n_256_k_5", size: 256, topK: 5},
- }
- for _, tc := range cases {
- candidates := buildOpenAISchedulerBenchmarkCandidates(tc.size)
- b.Run(tc.name+"/heap_topk", func(b *testing.B) {
- b.ReportAllocs()
- for i := 0; i < b.N; i++ {
- result := selectTopKOpenAICandidates(candidates, tc.topK)
- if len(result) == 0 {
- b.Fatal("unexpected empty result")
- }
- }
- })
- b.Run(tc.name+"/full_sort", func(b *testing.B) {
- b.ReportAllocs()
- for i := 0; i < b.N; i++ {
- result := selectTopKOpenAICandidatesBySortBenchmark(candidates, tc.topK)
- if len(result) == 0 {
- b.Fatal("unexpected empty result")
- }
- }
- })
- }
- }
|