summaryrefslogtreecommitdiffstats
path: root/barbench_test.go
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-16 16:12:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-16 16:12:43 +0000
commite28e21a9397e402a78499ceeef63dd19989be29e (patch)
treef4b7f6aaa6bb1563cac5f10b0bde8b6333ac4e37 /barbench_test.go
parentInitial commit. (diff)
downloadgolang-github-vbauerster-mpb-e28e21a9397e402a78499ceeef63dd19989be29e.tar.xz
golang-github-vbauerster-mpb-e28e21a9397e402a78499ceeef63dd19989be29e.zip
Adding upstream version 8.6.1.upstream/8.6.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'barbench_test.go')
-rw-r--r--barbench_test.go93
1 files changed, 93 insertions, 0 deletions
diff --git a/barbench_test.go b/barbench_test.go
new file mode 100644
index 0000000..47b633f
--- /dev/null
+++ b/barbench_test.go
@@ -0,0 +1,93 @@
+package mpb_test
+
+import (
+ "io"
+ "sync"
+ "testing"
+
+ "github.com/vbauerster/mpb/v8"
+)
+
+const total = 1000
+
+func BenchmarkNopStyle1Bar(b *testing.B) {
+ bench(b, mpb.NopStyle(), false, 1)
+}
+
+func BenchmarkNopStyle1BarWithAutoRefresh(b *testing.B) {
+ bench(b, mpb.NopStyle(), true, 1)
+}
+
+func BenchmarkNopStyle2Bars(b *testing.B) {
+ bench(b, mpb.NopStyle(), false, 2)
+}
+
+func BenchmarkNopStyle2BarsWithAutoRefresh(b *testing.B) {
+ bench(b, mpb.NopStyle(), true, 2)
+}
+
+func BenchmarkNopStyle3Bars(b *testing.B) {
+ bench(b, mpb.NopStyle(), false, 3)
+}
+
+func BenchmarkNopStyle3BarsWithAutoRefresh(b *testing.B) {
+ bench(b, mpb.NopStyle(), true, 3)
+}
+
+func BenchmarkBarStyle1Bar(b *testing.B) {
+ bench(b, mpb.BarStyle(), false, 1)
+}
+
+func BenchmarkBarStyle1BarWithAutoRefresh(b *testing.B) {
+ bench(b, mpb.BarStyle(), true, 1)
+}
+
+func BenchmarkBarStyle2Bars(b *testing.B) {
+ bench(b, mpb.BarStyle(), false, 2)
+}
+
+func BenchmarkBarStyle2BarsWithAutoRefresh(b *testing.B) {
+ bench(b, mpb.BarStyle(), true, 2)
+}
+
+func BenchmarkBarStyle3Bars(b *testing.B) {
+ bench(b, mpb.BarStyle(), false, 3)
+}
+
+func BenchmarkBarStyle3BarsWithAutoRefresh(b *testing.B) {
+ bench(b, mpb.BarStyle(), true, 3)
+}
+
+func bench(b *testing.B, builder mpb.BarFillerBuilder, autoRefresh bool, n int) {
+ var wg sync.WaitGroup
+ p := mpb.New(
+ mpb.WithWidth(100),
+ mpb.WithOutput(io.Discard),
+ mpb.ContainerOptional(mpb.WithAutoRefresh(), autoRefresh),
+ )
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
+ for j := 0; j < n; j++ {
+ bar := p.New(total, builder)
+ switch j {
+ case n - 1:
+ complete(b, bar)
+ default:
+ wg.Add(1)
+ go func() {
+ complete(b, bar)
+ wg.Done()
+ }()
+ }
+ }
+ wg.Wait()
+ }
+ p.Wait()
+}
+
+func complete(b *testing.B, bar *mpb.Bar) {
+ for i := 0; i < total; i++ {
+ bar.Increment()
+ }
+ bar.Wait()
+}