MCPcopy Create free account
hub / github.com/nutsdb/nutsdb / BenchmarkMergeWithHintFile

Function BenchmarkMergeWithHintFile

hintfile_bench_test.go:343–398  ·  view source on GitHub ↗

BenchmarkMergeWithHintFile benchmarks merge operation with hint files enabled

(b *testing.B)

Source from the content-addressed store, hash-verified

341
342// BenchmarkMergeWithHintFile benchmarks merge operation with hint files enabled
343func BenchmarkMergeWithHintFile(b *testing.B) {
344 tmpDir, err := os.MkdirTemp("", "hintfile-bench-merge")
345 if err != nil {
346 b.Fatalf("Failed to create temp dir: %v", err)
347 }
348 defer func() { _ = os.RemoveAll(tmpDir) }()
349
350 opts := DefaultOptions
351 opts.Dir = tmpDir
352 opts.SegmentSize = 64 * KB
353 opts.EnableHintFile = true
354
355 b.ResetTimer()
356 for i := 0; i < b.N; i++ {
357 // Create fresh database for each iteration
358 iterDir := fmt.Sprintf("%s/iter%d", tmpDir, i)
359 opts.Dir = iterDir
360
361 db, err := Open(opts)
362 if err != nil {
363 b.Fatalf("Failed to open database: %v", err)
364 }
365
366 bucket := "bucket"
367 txCreateBucket(&testing.T{}, db, DataStructureBTree, bucket, nil)
368
369 // Add data and delete some to trigger merge
370 for j := 0; j < 2000; j++ {
371 txPut(&testing.T{}, db, bucket, testutils.GetTestBytes(j), testutils.GetTestBytes(j), Persistent, nil, nil)
372 }
373
374 for j := 0; j < 500; j++ {
375 txDel(&testing.T{}, db, bucket, testutils.GetTestBytes(j), nil)
376 }
377
378 // Perform merge with hint file creation
379 b.StopTimer()
380 start := time.Now()
381 b.StartTimer()
382
383 err = db.Merge()
384 if err != nil {
385 b.Fatalf("Failed to merge: %v", err)
386 }
387
388 b.StopTimer()
389 mergeTime := time.Since(start)
390 b.ReportMetric(float64(mergeTime.Nanoseconds())/1e6, "ms")
391 b.StartTimer()
392
393 err = db.Close()
394 if err != nil {
395 b.Fatalf("Failed to close database: %v", err)
396 }
397 }
398}
399
400// BenchmarkMergeWithoutHintFile benchmarks merge operation without hint files enabled

Callers

nothing calls this directly

Calls 7

GetTestBytesFunction · 0.92
OpenFunction · 0.85
txCreateBucketFunction · 0.85
txPutFunction · 0.85
txDelFunction · 0.85
MergeMethod · 0.80
CloseMethod · 0.65

Tested by

no test coverage detected