File: //proc/self/root/opt/go/pkg/mod/go.mongodb.org/
[email protected]/benchmark/harness.go
// Copyright (C) MongoDB, Inc. 2017-present.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
package benchmark // import "go.mongodb.org/mongo-driver/benchmark"
import (
"context"
"testing"
"time"
"go.mongodb.org/mongo-driver/internal/require"
)
const (
five = 5
ten = 2 * five
hundred = ten * ten
thousand = ten * hundred
tenThousand = ten * thousand
hundredThousand = hundred * thousand
million = hundred * hundredThousand
ExecutionTimeout = five * time.Minute
StandardRuntime = time.Minute
MinimumRuntime = five * time.Second
MinIterations = hundred
)
type BenchCase func(context.Context, TimerManager, int) error
type BenchFunction func(*testing.B)
func WrapCase(bench BenchCase) BenchFunction {
name := getName(bench)
return func(b *testing.B) {
ctx := context.Background()
b.ResetTimer()
b.ReportAllocs()
err := bench(ctx, b, b.N)
require.NoError(b, err, "case='%s'", name)
}
}
func getAllCases() []*CaseDefinition {
return []*CaseDefinition{
{
Bench: BSONFlatDocumentEncoding,
Count: tenThousand,
Size: 75310000,
Runtime: StandardRuntime,
},
{
Bench: BSONFlatDocumentDecodingLazy,
Count: tenThousand,
Size: 75310000,
Runtime: StandardRuntime,
},
{
Bench: BSONFlatDocumentDecoding,
Count: tenThousand,
Size: 75310000,
Runtime: StandardRuntime,
},
{
Bench: BSONDeepDocumentEncoding,
Count: tenThousand,
Size: 19640000,
Runtime: StandardRuntime,
},
{
Bench: BSONDeepDocumentDecodingLazy,
Count: tenThousand,
Size: 19640000,
Runtime: StandardRuntime,
},
{
Bench: BSONDeepDocumentDecoding,
Count: tenThousand,
Size: 19640000,
Runtime: StandardRuntime,
},
// {
// Bench: BSONFullDocumentEncoding,
// Count: tenThousand,
// Size: 57340000,
// Runtime: StandardRuntime,
// },
// {
// Bench: BSONFullDocumentDecodingLazy,
// Count: tenThousand,
// Size: 57340000,
// Runtime: StandardRuntime,
// },
// {
// Bench: BSONFullDocumentDecoding,
// Count: tenThousand,
// Size: 57340000,
// Runtime: StandardRuntime,
// },
// {
// Bench: BSONFullReaderDecoding,
// Count: tenThousand,
// Size: 57340000,
// Runtime: StandardRuntime,
// },
{
Bench: BSONFlatMapDecoding,
Count: tenThousand,
Size: 75310000,
Runtime: StandardRuntime,
},
{
Bench: BSONFlatMapEncoding,
Count: tenThousand,
Size: 75310000,
Runtime: StandardRuntime,
},
{
Bench: BSONDeepMapDecoding,
Count: tenThousand,
Size: 19640000,
Runtime: StandardRuntime,
},
{
Bench: BSONDeepMapEncoding,
Count: tenThousand,
Size: 19640000,
Runtime: StandardRuntime,
},
// {
// Bench: BSONFullMapDecoding,
// Count: tenThousand,
// Size: 57340000,
// Runtime: StandardRuntime,
// },
// {
// Bench: BSONFullMapEncoding,
// Count: tenThousand,
// Size: 57340000,
// Runtime: StandardRuntime,
// },
{
Bench: BSONFlatStructDecoding,
Count: tenThousand,
Size: 75310000,
Runtime: StandardRuntime,
},
{
Bench: BSONFlatStructTagsDecoding,
Count: tenThousand,
Size: 75310000,
Runtime: StandardRuntime,
},
{
Bench: BSONFlatStructEncoding,
Count: tenThousand,
Size: 75310000,
Runtime: StandardRuntime,
},
{
Bench: BSONFlatStructTagsEncoding,
Count: tenThousand,
Size: 75310000,
Runtime: StandardRuntime,
},
{
Bench: SingleRunCommand,
Count: tenThousand,
Size: 160000,
Runtime: StandardRuntime,
},
{
Bench: SingleFindOneByID,
Count: tenThousand,
Size: 16220000,
Runtime: StandardRuntime,
},
{
Bench: SingleInsertSmallDocument,
Count: tenThousand,
Size: 2750000,
Runtime: StandardRuntime,
},
{
Bench: SingleInsertLargeDocument,
Count: ten,
Size: 27310890,
Runtime: StandardRuntime,
},
{
Bench: MultiFindMany,
Count: tenThousand,
Size: 16220000,
Runtime: StandardRuntime,
},
{
Bench: MultiInsertSmallDocument,
Count: tenThousand,
Size: 2750000,
Runtime: StandardRuntime,
},
{
Bench: MultiInsertLargeDocument,
Count: ten,
Size: 27310890,
Runtime: StandardRuntime,
RequiredIterations: tenThousand,
},
}
}