Add benchmarks for just byte buffers
Don't add the time/memory it takes to get the input data to the benchmark results.
This commit is contained in:
parent
1cc3247721
commit
7b901ce186
@ -10,6 +10,33 @@ import (
|
|||||||
"github.com/alcionai/corso/src/cmd/jsondebug/decoder"
|
"github.com/alcionai/corso/src/cmd/jsondebug/decoder"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func runBenchmarkByteInput(b *testing.B, d common.ByteManifestDecoder) {
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
fn := common.ManifestFileName
|
||||||
|
|
||||||
|
f, err := os.Open(fn)
|
||||||
|
if err != nil {
|
||||||
|
b.Logf("Error opening input file: %v", err)
|
||||||
|
b.FailNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
data, err := io.ReadAll(f)
|
||||||
|
if err != nil {
|
||||||
|
b.Logf("Error reading input data: %v", err)
|
||||||
|
b.FailNow()
|
||||||
|
}
|
||||||
|
|
||||||
|
f.Close()
|
||||||
|
b.ResetTimer()
|
||||||
|
|
||||||
|
err = d.DecodeBytes(data, false)
|
||||||
|
if err != nil {
|
||||||
|
b.Logf("Error decoding json: %v", err)
|
||||||
|
b.FailNow()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func runBenchmark(b *testing.B, d common.ManifestDecoder) {
|
func runBenchmark(b *testing.B, d common.ManifestDecoder) {
|
||||||
for _, unzip := range []string{"NotZipped", "Zipped"} {
|
for _, unzip := range []string{"NotZipped", "Zipped"} {
|
||||||
b.Run(unzip, func(b *testing.B) {
|
b.Run(unzip, func(b *testing.B) {
|
||||||
@ -51,27 +78,46 @@ func runBenchmark(b *testing.B, d common.ManifestDecoder) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Benchmark_Jsonparser(b *testing.B) {
|
type benchmarkInfo struct {
|
||||||
d := decoder.JsonParser{}
|
name string
|
||||||
runBenchmark(b, d)
|
dec common.Decoder
|
||||||
}
|
}
|
||||||
|
|
||||||
func Benchmark_Stdlib(b *testing.B) {
|
var decoderTable = []benchmarkInfo{
|
||||||
d := decoder.Stdlib{}
|
{
|
||||||
runBenchmark(b, d)
|
name: "Stdlib",
|
||||||
|
dec: decoder.Stdlib{},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "JsonParser",
|
||||||
|
dec: decoder.JsonParser{},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Array",
|
||||||
|
dec: decoder.Array{},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "ArrayFull",
|
||||||
|
dec: decoder.ArrayFull{},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Map",
|
||||||
|
dec: decoder.Map{},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func Benchmark_Array(b *testing.B) {
|
func Benchmark_FromFile(b *testing.B) {
|
||||||
d := decoder.Array{}
|
for _, benchmark := range decoderTable {
|
||||||
runBenchmark(b, d)
|
b.Run(benchmark.name, func(b *testing.B) {
|
||||||
|
runBenchmark(b, benchmark.dec)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Benchmark_ArrayFull(b *testing.B) {
|
func Benchmark_FromBytes(b *testing.B) {
|
||||||
d := decoder.ArrayFull{}
|
for _, benchmark := range decoderTable {
|
||||||
runBenchmark(b, d)
|
b.Run(benchmark.name, func(b *testing.B) {
|
||||||
}
|
runBenchmarkByteInput(b, benchmark.dec)
|
||||||
|
})
|
||||||
func Benchmark_Map(b *testing.B) {
|
}
|
||||||
d := decoder.Map{}
|
|
||||||
runBenchmark(b, d)
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user