Skip to content

Commit

Permalink
optimization for benchmark test
Browse files Browse the repository at this point in the history
  • Loading branch information
panjf2000 committed Oct 3, 2018
1 parent c10f80f commit 711dbdb
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 43 deletions.
59 changes: 19 additions & 40 deletions ants_benchmark_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,9 @@ import (
)

const (
_ = 1 << (10 * iota)
KiB // 1024
MiB // 1048576
GiB // 1073741824
TiB // 1099511627776 (超过了int32的范围)
PiB // 1125899906842624
EiB // 1152921504606846976
ZiB // 1180591620717411303424 (超过了int64的范围)
YiB // 1208925819614629174706176
)
const (
RunTimes = 10000000
Param = 100
AntsSize = 1000
TestSize = 10000
RunTimes = 10000000
benchParam = 10
benchAntsSize = 100000
)

func demoFunc() error {
Expand All @@ -69,10 +57,10 @@ func demoPoolFunc(args interface{}) error {
func BenchmarkGoroutineWithFunc(b *testing.B) {
var wg sync.WaitGroup
for i := 0; i < b.N; i++ {
wg.Add(RunTimes)
for j := 0; j < RunTimes; j++ {
wg.Add(1)
go func() {
demoPoolFunc(Param)
demoPoolFunc(benchParam)
wg.Done()
}()
}
Expand All @@ -82,14 +70,14 @@ func BenchmarkGoroutineWithFunc(b *testing.B) {

func BenchmarkSemaphoreWithFunc(b *testing.B) {
var wg sync.WaitGroup
sema := make(chan struct{}, AntsSize)
sema := make(chan struct{}, benchAntsSize)

for i := 0; i < b.N; i++ {
wg.Add(RunTimes)
for j := 0; j < RunTimes; j++ {
sema <- struct{}{}
go func() {
demoPoolFunc(Param)
demoPoolFunc(benchParam)
<-sema
wg.Done()
}()
Expand All @@ -100,63 +88,54 @@ func BenchmarkSemaphoreWithFunc(b *testing.B) {

func BenchmarkAntsPoolWithFunc(b *testing.B) {
var wg sync.WaitGroup
p, _ := ants.NewPoolWithFunc(AntsSize, func(i interface{}) error {
p, _ := ants.NewPoolWithFunc(benchAntsSize, func(i interface{}) error {
demoPoolFunc(i)
wg.Done()
return nil
})
defer p.Release()

b.ResetTimer()
b.StartTimer()
for i := 0; i < b.N; i++ {
wg.Add(RunTimes)
for j := 0; j < RunTimes; j++ {
wg.Add(1)
p.Serve(Param)
p.Serve(benchParam)
}
wg.Wait()
//b.Logf("running goroutines: %d", p.Running())
}
b.StopTimer()
}

func BenchmarkGoroutine(b *testing.B) {
var wg sync.WaitGroup
wg.Add(b.N * RunTimes)
for i := 0; i < b.N; i++ {
for j := 0; j < RunTimes; j++ {
go func() {
demoPoolFunc(Param)
wg.Done()
}()
go demoPoolFunc(benchParam)
}
}
wg.Wait()
}

func BenchmarkSemaphore(b *testing.B) {
var wg sync.WaitGroup
sema := make(chan struct{}, AntsSize)

wg.Add(RunTimes * b.N)
sema := make(chan struct{}, benchAntsSize)
for i := 0; i < b.N; i++ {
for j := 0; j < RunTimes; j++ {
sema <- struct{}{}
go func() {
demoPoolFunc(Param)
demoPoolFunc(benchParam)
<-sema
wg.Done()
}()
}
}
wg.Wait()
}

func BenchmarkAntsPool(b *testing.B) {
p, _ := ants.NewPoolWithFunc(AntsSize, demoPoolFunc)
p, _ := ants.NewPoolWithFunc(benchAntsSize, demoPoolFunc)
defer p.Release()
b.ResetTimer()
b.StartTimer()
for i := 0; i < b.N; i++ {
for j := 0; j < RunTimes; j++ {
p.Serve(Param)
p.Serve(benchParam)
}
}
b.StopTimer()
}
24 changes: 21 additions & 3 deletions ants_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,25 @@ import (
"github.com/panjf2000/ants"
)

var n = 100000
const (
_ = 1 << (10 * iota)
KiB // 1024
MiB // 1048576
GiB // 1073741824
TiB // 1099511627776 (超过了int32的范围)
PiB // 1125899906842624
EiB // 1152921504606846976
ZiB // 1180591620717411303424 (超过了int64的范围)
YiB // 1208925819614629174706176
)

const (
Param = 100
AntsSize = 1000
TestSize = 10000
n = 100000
)

var curMem uint64

func TestAntsPoolWithFunc(t *testing.T) {
Expand All @@ -51,7 +69,7 @@ func TestAntsPoolWithFunc(t *testing.T) {
t.Logf("pool with func, running workers number:%d", p.Running())
mem := runtime.MemStats{}
runtime.ReadMemStats(&mem)
curMem = mem.TotalAlloc / MiB - curMem
curMem = mem.TotalAlloc/MiB - curMem
t.Logf("memory usage:%d MB", curMem)
}
func TestNoPool(t *testing.T) {
Expand Down Expand Up @@ -130,4 +148,4 @@ func TestCodeCov(t *testing.T) {
p.ReSize(TestSize)
p.ReSize(AntsSize)
t.Logf("pool with func, after resize, capacity:%d, running:%d", p.Cap(), p.Running())
}
}

0 comments on commit 711dbdb

Please sign in to comment.