Codebase list golang-github-vbauerster-mpb / e94c4bc
refactoring: barbench_test Vladimir Bauer 2 years ago
1 changed file(s) with 21 addition(s) and 25 deletion(s). Raw diff Collapse all Expand all
11
22 import (
33 "io"
4 "sync"
54 "testing"
65
76 "github.com/vbauerster/mpb/v8"
98
109 const total = 1000
1110
12 func BenchmarkNopStyle1Bar(b *testing.B) {
11 func BenchmarkNopStyleB1(b *testing.B) {
1312 bench(b, mpb.NopStyle(), false, 1)
1413 }
1514
16 func BenchmarkNopStyle1BarWithAutoRefresh(b *testing.B) {
15 func BenchmarkNopStyleWithAutoRefreshB1(b *testing.B) {
1716 bench(b, mpb.NopStyle(), true, 1)
1817 }
1918
20 func BenchmarkNopStyle2Bars(b *testing.B) {
19 func BenchmarkNopStylesB2(b *testing.B) {
2120 bench(b, mpb.NopStyle(), false, 2)
2221 }
2322
24 func BenchmarkNopStyle2BarsWithAutoRefresh(b *testing.B) {
23 func BenchmarkNopStylesWithAutoRefreshB2(b *testing.B) {
2524 bench(b, mpb.NopStyle(), true, 2)
2625 }
2726
28 func BenchmarkNopStyle3Bars(b *testing.B) {
27 func BenchmarkNopStylesB3(b *testing.B) {
2928 bench(b, mpb.NopStyle(), false, 3)
3029 }
3130
32 func BenchmarkNopStyle3BarsWithAutoRefresh(b *testing.B) {
31 func BenchmarkNopStylesWithAutoRefreshB3(b *testing.B) {
3332 bench(b, mpb.NopStyle(), true, 3)
3433 }
3534
36 func BenchmarkBarStyle1Bar(b *testing.B) {
35 func BenchmarkBarStyleB1(b *testing.B) {
3736 bench(b, mpb.BarStyle(), false, 1)
3837 }
3938
40 func BenchmarkBarStyle1BarWithAutoRefresh(b *testing.B) {
39 func BenchmarkBarStyleWithAutoRefreshB1(b *testing.B) {
4140 bench(b, mpb.BarStyle(), true, 1)
4241 }
4342
44 func BenchmarkBarStyle2Bars(b *testing.B) {
43 func BenchmarkBarStylesB2(b *testing.B) {
4544 bench(b, mpb.BarStyle(), false, 2)
4645 }
4746
48 func BenchmarkBarStyle2BarsWithAutoRefresh(b *testing.B) {
47 func BenchmarkBarStylesWithAutoRefreshB2(b *testing.B) {
4948 bench(b, mpb.BarStyle(), true, 2)
5049 }
5150
52 func BenchmarkBarStyle3Bars(b *testing.B) {
51 func BenchmarkBarStylesB3(b *testing.B) {
5352 bench(b, mpb.BarStyle(), false, 3)
5453 }
5554
56 func BenchmarkBarStyle3BarsWithAutoRefresh(b *testing.B) {
55 func BenchmarkBarStylesWithAutoRefreshB3(b *testing.B) {
5756 bench(b, mpb.BarStyle(), true, 3)
5857 }
5958
6059 func bench(b *testing.B, builder mpb.BarFillerBuilder, autoRefresh bool, n int) {
61 var wg sync.WaitGroup
6260 p := mpb.New(
6361 mpb.WithWidth(100),
6462 mpb.WithOutput(io.Discard),
6563 mpb.ContainerOptional(mpb.WithAutoRefresh(), autoRefresh),
6664 )
65 defer p.Wait()
6766 b.ResetTimer()
6867 for i := 0; i < b.N; i++ {
68 var bars []*mpb.Bar
6969 for j := 0; j < n; j++ {
70 bar := p.New(total, builder)
70 bars = append(bars, p.New(total, builder))
7171 switch j {
7272 case n - 1:
73 complete(b, bar)
73 complete(bars[j])
7474 default:
75 wg.Add(1)
76 go func() {
77 complete(b, bar)
78 wg.Done()
79 }()
75 go complete(bars[j])
8076 }
8177 }
82 wg.Wait()
78 for _, bar := range bars {
79 bar.Wait()
80 }
8381 }
84 p.Wait()
8582 }
8683
87 func complete(b *testing.B, bar *mpb.Bar) {
84 func complete(bar *mpb.Bar) {
8885 for i := 0; i < total; i++ {
8986 bar.Increment()
9087 }
91 bar.Wait()
9288 }