From 36dadbe828f9dab3ee9386432abb155e024376db Mon Sep 17 00:00:00 2001 From: Martin Tournoij Date: Tue, 20 Dec 2022 15:16:22 +0100 Subject: [PATCH] Add a basic benchmark --- fsnotify_test.go | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) 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() +} -- 2.50.1