MCPcopy Index your code
hub / github.com/nutsdb/nutsdb / BenchmarkIterator_LargeValues

Function BenchmarkIterator_LargeValues

iterator_bench_test.go:399–454  ·  view source on GitHub ↗

BenchmarkIterator_LargeValues tests iteration with large values

(b *testing.B)

Source from the content-addressed store, hash-verified

397
398// BenchmarkIterator_LargeValues tests iteration with large values
399func BenchmarkIterator_LargeValues(b *testing.B) {
400 dir := b.TempDir()
401 opts := DefaultOptions
402 opts.Dir = dir
403 opts.SegmentSize = 256 * 1024 * 1024
404 opts.SyncEnable = false
405
406 db, err := Open(opts)
407 if err != nil {
408 b.Fatalf("Failed to open database: %v", err)
409 }
410 defer func() { _ = db.Close() }()
411
412 bucket := "large_bucket"
413 largeValue := make([]byte, 64*1024) // 64KB values
414
415 err = db.Update(func(tx *Tx) error {
416 if err := tx.NewKVBucket(bucket); err != nil {
417 return err
418 }
419 for i := 0; i < 1000; i++ {
420 key := testutils.GetTestBytes(i)
421 if err := tx.Put(bucket, key, largeValue, Persistent); err != nil {
422 return err
423 }
424 }
425 return nil
426 })
427 if err != nil {
428 b.Fatalf("Failed to populate database: %v", err)
429 }
430
431 b.ResetTimer()
432 b.ReportAllocs()
433
434 for i := 0; i < b.N; i++ {
435 err := db.View(func(tx *Tx) error {
436 iterator := NewIterator(tx, bucket, IteratorOptions{Reverse: false})
437 defer iterator.Release()
438
439 for iterator.Valid() {
440 _, err := iterator.Value()
441 if err != nil {
442 return err
443 }
444 if !iterator.Next() {
445 break
446 }
447 }
448 return nil
449 })
450 if err != nil {
451 b.Fatalf("View failed: %v", err)
452 }
453 }
454}

Callers

nothing calls this directly

Calls 12

ReleaseMethod · 0.95
ValidMethod · 0.95
ValueMethod · 0.95
NextMethod · 0.95
GetTestBytesFunction · 0.92
OpenFunction · 0.85
NewIteratorFunction · 0.85
UpdateMethod · 0.80
NewKVBucketMethod · 0.80
ViewMethod · 0.80
CloseMethod · 0.65
PutMethod · 0.45

Tested by

no test coverage detected