Adding modding folder with a hacked build.
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
package compression_test
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"io"
|
||||
"math/rand"
|
||||
"os"
|
||||
"runtime/pprof"
|
||||
"testing"
|
||||
|
||||
"github.com/inkyblackness/hacked/ss1/resource/lgres/internal/compression"
|
||||
"github.com/inkyblackness/hacked/ss1/serial"
|
||||
)
|
||||
|
||||
// To run a profile, run it with the following command:
|
||||
// go test -bench . -args -cpuprofile=prof
|
||||
var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
|
||||
|
||||
func rawData(size int) []byte {
|
||||
data := make([]byte, size)
|
||||
rand.Read(data) // nolint:gas
|
||||
return data
|
||||
}
|
||||
|
||||
func initProfiling(b *testing.B, nameSuffix string) func() {
|
||||
b.Helper()
|
||||
flag.Parse()
|
||||
if *cpuprofile != "" {
|
||||
f, err := os.Create(*cpuprofile + "-" + b.Name() + nameSuffix)
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
_ = pprof.StartCPUProfile(f)
|
||||
return func() { pprof.StopCPUProfile() }
|
||||
}
|
||||
return func() {}
|
||||
}
|
||||
|
||||
func BenchmarkRawDataStorage(b *testing.B) {
|
||||
profileStop := initProfiling(b, "")
|
||||
defer profileStop()
|
||||
data := rawData(1024 * 1024)
|
||||
b.ResetTimer()
|
||||
for run := 0; run < b.N; run++ {
|
||||
encoder := serial.NewEncoder(serial.NewByteStore())
|
||||
_, _ = encoder.Write(data)
|
||||
}
|
||||
}
|
||||
|
||||
func benchmarkCompression(b *testing.B, size int, nameSuffix string) {
|
||||
b.Helper()
|
||||
profileStop := initProfiling(b, nameSuffix)
|
||||
defer profileStop()
|
||||
data := rawData(size)
|
||||
b.ResetTimer()
|
||||
for run := 0; run < b.N; run++ {
|
||||
compressor := compression.NewCompressor(serial.NewByteStore())
|
||||
_, _ = compressor.Write(data)
|
||||
_ = compressor.Close()
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkCompression1KB(b *testing.B) {
|
||||
benchmarkCompression(b, 1024, "1KB")
|
||||
}
|
||||
|
||||
func BenchmarkCompression16KB(b *testing.B) {
|
||||
benchmarkCompression(b, 1024*16, "16KB")
|
||||
}
|
||||
|
||||
func BenchmarkCompression128KB(b *testing.B) {
|
||||
benchmarkCompression(b, 1024*128, "128KB")
|
||||
}
|
||||
|
||||
func BenchmarkCompression512KB(b *testing.B) {
|
||||
benchmarkCompression(b, 1024*512, "512KB")
|
||||
}
|
||||
|
||||
func BenchmarkCompression1024KB(b *testing.B) {
|
||||
benchmarkCompression(b, 1024*1024, "1024KB")
|
||||
}
|
||||
|
||||
func benchmarkCompressionDecompression(b *testing.B, size int, nameSuffix string) {
|
||||
b.Helper()
|
||||
profileStop := initProfiling(b, nameSuffix)
|
||||
defer profileStop()
|
||||
data := rawData(size)
|
||||
output := make([]byte, len(data))
|
||||
b.ResetTimer()
|
||||
for run := 0; run < b.N; run++ {
|
||||
store := serial.NewByteStore()
|
||||
compressor := compression.NewCompressor(store)
|
||||
_, _ = compressor.Write(data)
|
||||
_ = compressor.Close()
|
||||
_, _ = store.Seek(0, io.SeekStart)
|
||||
decompressor := compression.NewDecompressor(store)
|
||||
_, _ = decompressor.Read(output)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkCompressionDecompression1KB(b *testing.B) {
|
||||
benchmarkCompressionDecompression(b, 1024, "1KB")
|
||||
}
|
||||
|
||||
func BenchmarkCompressionDecompression16KB(b *testing.B) {
|
||||
benchmarkCompressionDecompression(b, 1024*16, "16KB")
|
||||
}
|
||||
|
||||
func BenchmarkCompressionDecompression128KB(b *testing.B) {
|
||||
benchmarkCompressionDecompression(b, 1024*128, "128KB")
|
||||
}
|
||||
|
||||
func BenchmarkCompressionDecompression512KB(b *testing.B) {
|
||||
benchmarkCompressionDecompression(b, 1024*512, "512KB")
|
||||
}
|
||||
|
||||
func BenchmarkCompressionDecompression1024KB(b *testing.B) {
|
||||
benchmarkCompressionDecompression(b, 1024*1024, "1024KB")
|
||||
}
|
||||
Reference in New Issue
Block a user