From: Martin Tournoij Date: Tue, 20 Dec 2022 14:16:22 +0000 (+0100) Subject: Add a basic benchmark X-Git-Tag: v1.7.2~19 X-Git-Url: https://go.fuhry.dev/?a=commitdiff_plain;h=36dadbe828f9dab3ee9386432abb155e024376db;p=fsnotify.git Add a basic benchmark --- diff --git a/fsnotify_test.go b/fsnotify_test.go index 767654e..0d2f008 100644 --- a/fsnotify_test.go +++ b/fsnotify_test.go @@ -9,6 +9,7 @@ import ( "runtime" "sort" "strings" + "sync" "sync/atomic" "testing" "time" @@ -1478,3 +1479,54 @@ func TestWatchList(t *testing.T) { t.Errorf("\nhave: %s\nwant: %s", have, want) } } + +func BenchmarkWatch(b *testing.B) { + w, err := NewWatcher() + if err != nil { + b.Fatal(err) + } + + tmp := b.TempDir() + file := join(tmp, "file") + err = w.Add(tmp) + if err != nil { + b.Fatal(err) + } + + var wg sync.WaitGroup + wg.Add(1) + go func() { + for { + select { + case err, ok := <-w.Errors: + if !ok { + wg.Done() + return + } + b.Fatal(err) + case _, ok := <-w.Events: + if !ok { + wg.Done() + return + } + } + } + }() + + b.ResetTimer() + for n := 0; n < b.N; n++ { + fp, err := os.Create(file) + if err != nil { + b.Fatal(err) + } + err = fp.Close() + if err != nil { + b.Fatal(err) + } + } + err = w.Close() + if err != nil { + b.Fatal(err) + } + wg.Wait() +}