diff --git a/benchmark/read_samples.go b/benchmark/read_samples.go deleted file mode 100644 index e66a247..0000000 --- a/benchmark/read_samples.go +++ /dev/null @@ -1,38 +0,0 @@ -package main - -import ( - "flag" - "fmt" - wav "github.com/youpy/go-wav" - "io" - "os" - "testing" -) - -func main() { - infile_epath := flag.String("infile", "", "wav file to read") - flag.Parse() - - n := []uint32{1, 10, 100, 1000, 2000, 3000, 5000, 8000, 10000, 20000, 40000} - - var t int - - for _, numSamples := range n { - result := testing.Benchmark(func(b *testing.B) { - file, _ := os.Open(*infile_epath) - reader := wav.NewReader(file) - - for { - samples, err := reader.ReadSamples(numSamples) - if err == io.EOF { - break - } - for _, sample := range samples { - t += reader.IntValue(sample, 0) - t += reader.IntValue(sample, 1) - } - } - }) - fmt.Printf("ReadSamples(%d): \t%s\n", numSamples, result.String()) - } -} diff --git a/reader_test.go b/reader_test.go index 448bb79..b17a442 100644 --- a/reader_test.go +++ b/reader_test.go @@ -1,8 +1,11 @@ package wav import ( + "fmt" + "io" "io/ioutil" "math" + "os" "testing" "gotest.tools/assert" @@ -149,3 +152,30 @@ func TestReadAlaw(t *testing.T) { t.Logf("Data size: %d", len(bytes)) } + +func BenchmarkReadSamples(b *testing.B) { + n := []uint32{1, 10, 100, 1000, 2000, 3000, 5000, 8000, 10000, 20000, 40000} + + var t int + + for _, numSamples := range n { + b.Run(fmt.Sprintf("%d", numSamples), func(b *testing.B) { + for i := 0; i < b.N; i++ { + + file, _ := os.Open("./files/a.wav") + reader := NewReader(file) + + for { + samples, err := reader.ReadSamples(numSamples) + if err == io.EOF { + break + } + for _, sample := range samples { + t += reader.IntValue(sample, 0) + t += reader.IntValue(sample, 1) + } + } + } + }) + } +} diff --git a/writer_test.go b/writer_test.go index 2cd2568..9025e2d 100644 --- a/writer_test.go +++ b/writer_test.go @@ -1,6 +1,7 @@ package wav import ( + "io" "io/ioutil" "os" "testing" @@ -283,3 +284,31 @@ func TestWrite32BitStereo(t *testing.T) { assert.Equal(t, samples[1].Values[0], 123) assert.Equal(t, samples[1].Values[1], -123) } + +func BenchmarkWriteSamples(b *testing.B) { + n := 4096 + samples := []Sample{} + + file, _ := os.Open("./files/a.wav") + reader := NewReader(file) + + for { + spls, err := reader.ReadSamples(uint32(n)) + if err == io.EOF { + break + } + samples = append(samples, spls...) + } + + b.Run("write samples", func(b *testing.B) { + for i := 0; i < b.N; i++ { + tmpfile, err := ioutil.TempFile("", "example") + if err != nil { + b.Fatal(err) + } + defer os.Remove(tmpfile.Name()) + writer := NewWriter(tmpfile, uint32(len(samples)), 2, 44100, 16) + writer.WriteSamples(samples) + } + }) +}