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:
parent
2e3388800d
commit
f9c21e91aa
@ -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)
|
||||
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)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user