返回 DeepSeek-Reasonix
metadata_scan_benchmark_test.go
根目录 / internal / sessioncatalog / metadata_scan_benchmark_test.go
1 package sessioncatalog
2
3 import (
4 "context"
5 "fmt"
6 "os"
7 "path/filepath"
8 "testing"
9 "time"
10 )
11
12 // Measures metadata/SQLite work without the scheduler's deliberate inter-slice
13 // sleep. Native startup acceptance remains a separate production-package test.
14 func BenchmarkMetadataScanUnchanged10K(b *testing.B) {
15 dir := b.TempDir()
16 for i := range 10000 {
17 if err := os.WriteFile(filepath.Join(dir, fmt.Sprintf("%05d.jsonl", i)), []byte("unread body\n"), 0600); err != nil {
18 b.Fatal(err)
19 }
20 }
21 c, err := Open(b.Context(), Options{Path: filepath.Join(b.TempDir(), "catalog.sqlite"), MetadataOnly: true, StartPaused: true})
22 if err != nil {
23 b.Fatal(err)
24 }
25 b.Cleanup(func() { _ = c.Close(context.Background()) })
26 target := DirectoryTarget{Path: dir, Scope: "global"}
27 scan := func() {
28 run, err := c.startMetadataScan(b.Context(), target, c.mutationSeq.Add(1), false)
29 if err != nil {
30 b.Fatal(err)
31 }
32 defer func() { run.close(b.Context(), err) }()
33 for {
34 var done bool
35 done, _, err = run.step(b.Context())
36 if err != nil {
37 b.Fatal(err)
38 }
39 if done {
40 return
41 }
42 }
43 }
44 started := time.Now()
45 scan()
46 cold := time.Since(started)
47 b.ResetTimer()
48 for range b.N {
49 scan()
50 }
51 b.ReportMetric(float64(cold)/float64(time.Millisecond), "cold-ms")
52 }
53
53 lines GO