WithAutoRefresh bench cases
Vladimir Bauer
3 years ago
| 0 | package mpb | |
| 0 | package mpb_test | |
| 1 | 1 | |
| 2 | 2 | import ( |
| 3 | "io" | |
| 3 | 4 | "sync" |
| 4 | 5 | "testing" |
| 6 | ||
| 7 | "github.com/vbauerster/mpb/v8" | |
| 5 | 8 | ) |
| 6 | 9 | |
| 7 | 10 | const total = 1000 |
| 8 | 11 | |
| 9 | func BenchmarkNopStyleOneBar(b *testing.B) { | |
| 10 | bench(b, NopStyle(), 1) | |
| 12 | func BenchmarkNopStyle1Bar(b *testing.B) { | |
| 13 | bench(b, mpb.NopStyle(), false, 1) | |
| 11 | 14 | } |
| 12 | 15 | |
| 13 | func BenchmarkNopStyleTwoBars(b *testing.B) { | |
| 14 | bench(b, NopStyle(), 2) | |
| 16 | func BenchmarkNopStyle1BarWithAutoRefresh(b *testing.B) { | |
| 17 | bench(b, mpb.NopStyle(), true, 1) | |
| 15 | 18 | } |
| 16 | 19 | |
| 17 | func BenchmarkNopStyleThreeBars(b *testing.B) { | |
| 18 | bench(b, NopStyle(), 3) | |
| 20 | func BenchmarkNopStyle2Bars(b *testing.B) { | |
| 21 | bench(b, mpb.NopStyle(), false, 2) | |
| 19 | 22 | } |
| 20 | 23 | |
| 21 | func BenchmarkBarStyleOneBar(b *testing.B) { | |
| 22 | bench(b, BarStyle(), 1) | |
| 24 | func BenchmarkNopStyle2BarsWithAutoRefresh(b *testing.B) { | |
| 25 | bench(b, mpb.NopStyle(), true, 2) | |
| 23 | 26 | } |
| 24 | 27 | |
| 25 | func BenchmarkBarStyleTwoBars(b *testing.B) { | |
| 26 | bench(b, BarStyle(), 2) | |
| 28 | func BenchmarkNopStyle3Bars(b *testing.B) { | |
| 29 | bench(b, mpb.NopStyle(), false, 3) | |
| 27 | 30 | } |
| 28 | 31 | |
| 29 | func BenchmarkBarStyleThreeBars(b *testing.B) { | |
| 30 | bench(b, BarStyle(), 3) | |
| 32 | func BenchmarkNopStyle3BarsWithAutoRefresh(b *testing.B) { | |
| 33 | bench(b, mpb.NopStyle(), true, 3) | |
| 31 | 34 | } |
| 32 | 35 | |
| 33 | func bench(b *testing.B, builder BarFillerBuilder, n int) { | |
| 36 | func BenchmarkBarStyle1Bar(b *testing.B) { | |
| 37 | bench(b, mpb.BarStyle(), false, 1) | |
| 38 | } | |
| 39 | ||
| 40 | func BenchmarkBarStyle1BarWithAutoRefresh(b *testing.B) { | |
| 41 | bench(b, mpb.BarStyle(), true, 1) | |
| 42 | } | |
| 43 | ||
| 44 | func BenchmarkBarStyle2Bars(b *testing.B) { | |
| 45 | bench(b, mpb.BarStyle(), false, 2) | |
| 46 | } | |
| 47 | ||
| 48 | func BenchmarkBarStyle2BarsWithAutoRefresh(b *testing.B) { | |
| 49 | bench(b, mpb.BarStyle(), true, 2) | |
| 50 | } | |
| 51 | ||
| 52 | func BenchmarkBarStyle3Bars(b *testing.B) { | |
| 53 | bench(b, mpb.BarStyle(), false, 3) | |
| 54 | } | |
| 55 | ||
| 56 | func BenchmarkBarStyle3BarsWithAutoRefresh(b *testing.B) { | |
| 57 | bench(b, mpb.BarStyle(), true, 3) | |
| 58 | } | |
| 59 | ||
| 60 | func bench(b *testing.B, builder mpb.BarFillerBuilder, autoRefresh bool, n int) { | |
| 34 | 61 | var wg sync.WaitGroup |
| 35 | p := New(WithOutput(nil), WithWidth(80)) | |
| 62 | p := mpb.New( | |
| 63 | mpb.WithWidth(100), | |
| 64 | mpb.WithOutput(io.Discard), | |
| 65 | mpb.ContainerOptional(mpb.WithAutoRefresh(), autoRefresh), | |
| 66 | ) | |
| 36 | 67 | b.ResetTimer() |
| 37 | 68 | for i := 0; i < b.N; i++ { |
| 38 | 69 | for j := 0; j < n; j++ { |
| 53 | 84 | p.Wait() |
| 54 | 85 | } |
| 55 | 86 | |
| 56 | func complete(b *testing.B, bar *Bar) { | |
| 87 | func complete(b *testing.B, bar *mpb.Bar) { | |
| 57 | 88 | for i := 0; i < total; i++ { |
| 58 | 89 | bar.Increment() |
| 59 | 90 | } |
| 60 | if !bar.Completed() { | |
| 61 | b.Fail() | |
| 62 | } | |
| 63 | 91 | bar.Wait() |
| 64 | 92 | } |