mirror of
https://github.com/restic/restic.git
synced 2024-09-19 17:30:18 +02:00
55 lines
1.0 KiB
Go
55 lines
1.0 KiB
Go
package bench_test
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
|
|
"bazil.org/fuse"
|
|
"bazil.org/fuse/fs"
|
|
"bazil.org/fuse/fs/fstestutil"
|
|
"golang.org/x/net/context"
|
|
)
|
|
|
|
type dummyFile struct {
|
|
fstestutil.File
|
|
}
|
|
|
|
type benchCreateDir struct {
|
|
fstestutil.Dir
|
|
}
|
|
|
|
var _ fs.NodeCreater = (*benchCreateDir)(nil)
|
|
|
|
func (f *benchCreateDir) Create(ctx context.Context, req *fuse.CreateRequest, resp *fuse.CreateResponse) (fs.Node, fs.Handle, error) {
|
|
child := &dummyFile{}
|
|
return child, child, nil
|
|
}
|
|
|
|
func BenchmarkCreate(b *testing.B) {
|
|
f := &benchCreateDir{}
|
|
mnt, err := fstestutil.MountedT(b, fstestutil.SimpleFS{f}, nil)
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
defer mnt.Close()
|
|
|
|
// prepare file names to decrease test overhead
|
|
names := make([]string, 0, b.N)
|
|
for i := 0; i < b.N; i++ {
|
|
// zero-padded so cost stays the same on every iteration
|
|
names = append(names, mnt.Dir+"/"+fmt.Sprintf("%08x", i))
|
|
}
|
|
b.ResetTimer()
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
f, err := os.Create(names[i])
|
|
if err != nil {
|
|
b.Fatalf("WriteFile: %v", err)
|
|
}
|
|
f.Close()
|
|
}
|
|
|
|
b.StopTimer()
|
|
}
|