Files
gokeystat/saving_test.go
2016-03-30 00:56:11 +03:00

124 lines
2.2 KiB
Go

// saving_test.go
package main
import (
"io/ioutil"
"math/rand"
"os"
"testing"
)
func GenerateRandStatsForTime(N int) []StatForTime {
data := make([]StatForTime, N)
keyMap := GetKeymap()
rnd := rand.New(rand.NewSource(42))
for i := 0; i < N; i++ {
var curStat StatForTime
curStat.Init(rnd.Int63())
for keyNum := range keyMap {
if rnd.Float32() > 0.7 {
curStat.keys[keyNum] = rnd.Intn(5000)
}
}
data = append(data, curStat)
}
return data
}
func BenchmarkCsvSavingOnlySum(b *testing.B) {
data := GenerateRandStatsForTime(b.N)
keyMap := GetKeymap()
tmpFile, err := ioutil.TempFile(os.TempDir(), "benchmark")
if err != nil {
b.Fatal(err)
}
defer os.Remove(tmpFile.Name())
b.ResetTimer()
SaveToCsvWriter(data, keyMap, tmpFile, false)
}
func BenchmarkCsvSaving(b *testing.B) {
data := GenerateRandStatsForTime(b.N)
keyMap := GetKeymap()
tmpFile, err := ioutil.TempFile(os.TempDir(), "benchmark")
if err != nil {
b.Fatal(err)
}
defer os.Remove(tmpFile.Name())
b.ResetTimer()
SaveToCsvWriter(data, keyMap, tmpFile, true)
}
func BenchmarkJSONSavingOnlySum(b *testing.B) {
data := GenerateRandStatsForTime(b.N)
keyMap := GetKeymap()
tmpFile, err := ioutil.TempFile(os.TempDir(), "benchmark")
if err != nil {
b.Fatal(err)
}
defer os.Remove(tmpFile.Name())
b.ResetTimer()
SaveToJSONWriter(data, keyMap, tmpFile, false)
}
func BenchmarkJSONSaving(b *testing.B) {
data := GenerateRandStatsForTime(b.N)
keyMap := GetKeymap()
tmpFile, err := ioutil.TempFile(os.TempDir(), "benchmark")
if err != nil {
b.Fatal(err)
}
defer os.Remove(tmpFile.Name())
b.ResetTimer()
SaveToJSONWriter(data, keyMap, tmpFile, true)
}
func BenchmarkCsvGzSaving(b *testing.B) {
data := GenerateRandStatsForTime(b.N)
keyMap := GetKeymap()
tmpFile, err := ioutil.TempFile(os.TempDir(), "benchmark")
if err != nil {
b.Fatal(err)
}
defer os.Remove(tmpFile.Name())
b.ResetTimer()
SaveToCsvGzWriter(data, keyMap, tmpFile, true)
}
func BenchmarkJSONGzSaving(b *testing.B) {
data := GenerateRandStatsForTime(b.N)
keyMap := GetKeymap()
tmpFile, err := ioutil.TempFile(os.TempDir(), "benchmark")
if err != nil {
b.Fatal(err)
}
defer os.Remove(tmpFile.Name())
b.ResetTimer()
SaveToJSONGzWriter(data, keyMap, tmpFile, true)
}