package ocean_test import ( "fmt" "strconv" "testing" "git.akyoto.dev/go/assert" "git.akyoto.dev/go/ocean" ) func BenchmarkGet(b *testing.B) { users, err := ocean.New[User]("test") assert.Nil(b, err) defer users.Sync() defer users.Clear() users.Set("1", &User{Name: "User 1"}) b.ReportAllocs() b.ResetTimer() b.RunParallel(func(pb *testing.PB) { for pb.Next() { user, err := users.Get("1") assert.Nil(b, err) assert.NotNil(b, user) assert.Equal(b, user.Name, "User 1") } }) b.StopTimer() } func BenchmarkSet(b *testing.B) { users, err := ocean.New[User]("test") assert.Nil(b, err) defer users.Sync() defer users.Clear() user := &User{Name: "User 1"} b.ReportAllocs() b.ResetTimer() b.RunParallel(func(pb *testing.PB) { for pb.Next() { users.Set("1", user) } }) b.StopTimer() } func BenchmarkDelete(b *testing.B) { users, err := ocean.New[User]("test") assert.Nil(b, err) defer users.Sync() defer users.Clear() b.ReportAllocs() b.ResetTimer() b.RunParallel(func(pb *testing.PB) { for pb.Next() { users.Delete("1") } }) b.StopTimer() } func BenchmarkColdStart(b *testing.B) { users, err := ocean.New[User]("test") assert.Nil(b, err) defer users.Sync() defer users.Clear() b.Run("100", func(b *testing.B) { for i := 0; i < 100; i++ { users.Set(strconv.Itoa(i), &User{Name: fmt.Sprintf("User %d", i)}) } b.ReportAllocs() b.ResetTimer() for n := 0; n < b.N; n++ { again, err := ocean.New[User]("test") assert.Nil(b, err) assert.NotNil(b, again) } b.StopTimer() }) }