mirror of https://github.com/dirtbags/moth.git
Add zipfile performance testing
This commit is contained in:
parent
430e44ce87
commit
431e1f00a7
|
@ -5,10 +5,80 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"math/rand"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestZipPerformance(t *testing.T) {
|
||||||
|
// I get 4.8s for 10,000 reads
|
||||||
|
if os.Getenv("BENCHMARK") == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
rng := rand.New(rand.NewSource(rand.Int63()))
|
||||||
|
|
||||||
|
tf, err := ioutil.TempFile("", "zipfs")
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer os.Remove(tf.Name())
|
||||||
|
|
||||||
|
w := zip.NewWriter(tf)
|
||||||
|
for i := 0; i < 100; i += 1 {
|
||||||
|
fsize := 1000
|
||||||
|
switch {
|
||||||
|
case i % 10 == 0:
|
||||||
|
fsize = 400000
|
||||||
|
case i % 20 == 6:
|
||||||
|
fsize = 5000000
|
||||||
|
case i == 80:
|
||||||
|
fsize = 1000000000
|
||||||
|
}
|
||||||
|
|
||||||
|
f, err := w.Create(fmt.Sprintf("%d.bin", i))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if _, err := io.CopyN(f, rng, int64(fsize)); err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
w.Close()
|
||||||
|
|
||||||
|
tfsize, err := tf.Seek(0, 2)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
startTime := time.Now()
|
||||||
|
nReads := 10000
|
||||||
|
for i := 0; i < 10000; i += 1 {
|
||||||
|
r, err := zip.NewReader(tf, tfsize)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
filenum := rng.Intn(len(r.File))
|
||||||
|
f, err := r.File[filenum].Open()
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
buf, err := ioutil.ReadAll(f)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
t.Log("Read file of size", len(buf))
|
||||||
|
f.Close()
|
||||||
|
}
|
||||||
|
t.Log(nReads, "reads took", time.Since(startTime))
|
||||||
|
t.Error("moo")
|
||||||
|
}
|
||||||
|
|
||||||
func TestZipfs(t *testing.T) {
|
func TestZipfs(t *testing.T) {
|
||||||
tf, err := ioutil.TempFile("", "zipfs")
|
tf, err := ioutil.TempFile("", "zipfs")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue