tests: Add file create benchmarks for different sizes

Example output on my machine:

~/src/github.com/rfjakob/gocryptfs$ ./benchmark.bash
gocryptfs v0.3.1-25-g2e33888-dirty; on-disk format 2
PASS
BenchmarkStreamWrite-2	     100	  12189867 ns/op	  86.02 MB/s
BenchmarkStreamRead-2 	     200	   9113262 ns/op	 115.06 MB/s
BenchmarkCreate0B-2   	   10000	    100249 ns/op
BenchmarkCreate1B-2   	   10000	    177680 ns/op	   0.01 MB/s
BenchmarkCreate100B-2 	    3000	    431586 ns/op	   0.23 MB/s
BenchmarkCreate4kB-2  	    3000	    455204 ns/op	   9.00 MB/s
BenchmarkCreate10kB-2 	    3000	    594044 ns/op	  17.24 MB/s
ok  	github.com/rfjakob/gocryptfs/integration_tests	15.176s
This commit is contained in:
Jakob Unterwurzacher 2015-11-14 16:40:05 +01:00
parent 2e3388800d
commit f9c21e91aa
1 changed files with 40 additions and 12 deletions

View File

@ -34,7 +34,10 @@ func BenchmarkStreamRead(t *testing.B) {
t.SetBytes(int64(len(buf)))
fn := plainDir + "BenchmarkWrite"
fi, _ := os.Stat(fn)
fi, err := os.Stat(fn)
if err != nil {
t.Fatal(err)
}
mb := int(fi.Size() / 1024 / 1024)
if t.N > mb {
@ -56,7 +59,7 @@ func BenchmarkStreamRead(t *testing.B) {
//fmt.Printf("done\n")
}
file, err := os.Open(plainDir + "BenchmarkWrite")
file, err := os.Open(fn)
if err != nil {
t.FailNow()
}
@ -75,25 +78,50 @@ func BenchmarkStreamRead(t *testing.B) {
file.Close()
}
func BenchmarkCreate10B(t *testing.B) {
dir := plainDir + "BenchmarkCreate10B"
err := os.RemoveAll(dir)
// createFiles - create "count" files of size "size" bytes each
func createFiles(t *testing.B, count int, size int) {
dir := fmt.Sprintf("%s/createFiles_%d_%d", plainDir, count, size)
err := os.Mkdir(dir, 0777)
if err != nil {
t.Fatal(err)
}
err = os.Mkdir(dir, 0777)
if err != nil {
t.Fatal(err)
}
buf := []byte("1234567890")
buf := make([]byte, size)
t.SetBytes(int64(len(buf)))
t.ResetTimer()
var i int
for i = 0; i < t.N; i++ {
for i = 0; i < count; i++ {
file := fmt.Sprintf("%s/%d", dir, i)
err = ioutil.WriteFile(file, buf, 0666)
if size > 0 {
err = ioutil.WriteFile(file, buf, 0666)
} else {
var fh *os.File
fh, err = os.Create(file)
fh.Close()
}
if err != nil {
t.Fatal(err)
}
}
t.StopTimer()
os.RemoveAll(dir)
}
func BenchmarkCreate0B(t *testing.B) {
createFiles(t, t.N, 0)
}
func BenchmarkCreate1B(t *testing.B) {
createFiles(t, t.N, 1)
}
func BenchmarkCreate100B(t *testing.B) {
createFiles(t, t.N, 100)
}
func BenchmarkCreate4kB(t *testing.B) {
createFiles(t, t.N, 4*1024)
}
func BenchmarkCreate10kB(t *testing.B) {
createFiles(t, t.N, 10*1024)
}