单元测试 goroutine 数 与性能 CPU+1

1、

并发下载图片的goroutine数为CPU数加1

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package goroutin
 
import (
    "fmt"
    "io"
    "net/http"
    "os"
    "sync"
)
 
func dlImg(threadPool, batchNum int) {
    var wg sync.WaitGroup
    URL := "http://intranet/images/a.png"
    s := func(i interface{}) string {
        return fmt.Sprint(i)
    }
    dir := "img" + s(threadPool) + "-" + s(batchNum)
    err := os.Mkdir(dir, 0777)
    if err != nil {
        logHelper.Error(err)
    }
    for j := 0; j < threadPool; j++ {
        wg.Add(1)
        go func() {
            for i := 0; i < batchNum; i++ {
                resp, err := http.Get(URL)
                if err != nil {
                    logHelper.Error(err)
                    continue
                }
                defer resp.Body.Close()
                bs, err := io.ReadAll(resp.Body)
                if err != nil {
                    logHelper.Error(err)
                    continue
                }
                name := dir + "/" + s(i) + ".png"
                os.WriteFile(name, bs, 0777)
            }
            wg.Done()
        }()
    }
    wg.Wait()
}

  

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package goroutin
 
import "testing"
 
func Test_dlImg(t *testing.T) {
 
    type args struct {
        threadPool int
        batchNum   int
    }
    tests := []struct {
        name string
        args args
    }{
        // TODO: Add test cases.
        {name: "10-128", args: args{threadPool: 10, batchNum: 128}},
        {name: "3-128", args: args{threadPool: 3, batchNum: 128}},
        {name: "2-128", args: args{threadPool: 2, batchNum: 128}},
        {name: "1-128", args: args{threadPool: 1, batchNum: 128}},
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            dlImg(tt.args.threadPool, tt.args.batchNum)
        })
    }
}

  

测试结果

Running tool: C:\Program Files\Go\bin\go.exe test -timeout 30s -run ^Test_dlImg$ goroutin

 

 

=== RUN   Test_dlImg

=== RUN   Test_dlImg/10-128

=== RUN   Test_dlImg/3-128

=== RUN   Test_dlImg/2-128

=== RUN   Test_dlImg/1-128

--- PASS: Test_dlImg (1.79s)

    --- PASS: Test_dlImg/10-128 (0.65s)

    --- PASS: Test_dlImg/3-128 (0.37s)

    --- PASS: Test_dlImg/2-128 (0.51s)

    --- PASS: Test_dlImg/1-128 (0.26s)

PASS

ok      goroutin        2.010s

 

internet Img
--- PASS: Test_dlImg (16.33s)
--- PASS: Test_dlImg/10-128 (9.47s)
--- PASS: Test_dlImg/3-128 (2.94s)
--- PASS: Test_dlImg/2-128 (2.58s)
--- PASS: Test_dlImg/1-128 (1.34s)
PASS

--- PASS: Test_dlImg (17.33s)
--- PASS: Test_dlImg/10-128 (9.27s)
--- PASS: Test_dlImg/3-128 (3.22s)
--- PASS: Test_dlImg/2-128 (2.35s)
--- PASS: Test_dlImg/1-128 (2.48s)
PASS
--- PASS: Test_dlImg (19.78s)
--- PASS: Test_dlImg/10-128 (11.25s)
--- PASS: Test_dlImg/3-128 (3.38s)
--- PASS: Test_dlImg/2-128 (2.58s)
--- PASS: Test_dlImg/1-128 (2.56s)
PASS

--- PASS: Test_dlImg (19.22s)
--- PASS: Test_dlImg/10-256 (6.60s)
--- PASS: Test_dlImg/3-256 (4.26s)
--- PASS: Test_dlImg/2-256 (4.27s)
--- PASS: Test_dlImg/1-256 (4.09s)
PASS

intranet Img
--- PASS: Test_dlImg (5.10s)
--- PASS: Test_dlImg/10-512 (2.38s)
--- PASS: Test_dlImg/3-512 (0.97s)
--- PASS: Test_dlImg/2-512 (0.85s)
--- PASS: Test_dlImg/1-512 (0.91s)
PASS
ok goroutin 5.329s

--- PASS: Test_dlImg (9.60s)
--- PASS: Test_dlImg/10-1024 (3.25s)
--- PASS: Test_dlImg/3-1024 (2.92s)
--- PASS: Test_dlImg/2-1024 (1.85s)
--- PASS: Test_dlImg/1-1024 (1.57s)
PASS

--- PASS: Test_dlImg (24.36s)
--- PASS: Test_dlImg/10-2048 (10.53s)
--- PASS: Test_dlImg/3-2048 (5.27s)
--- PASS: Test_dlImg/2-2048 (4.60s)
--- PASS: Test_dlImg/1-2048 (3.96s)
PASS

--- PASS: Test_dlImg (20.01s)
--- PASS: Test_dlImg/3-4096 (6.90s)
--- PASS: Test_dlImg/2-4096 (6.43s)
--- PASS: Test_dlImg/1-4096 (6.69s)
PASS

 

posted @   papering  阅读(84)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2019-01-26 通过 Kubernetes 和容器实现 DevOps
2018-01-26 QQ空间说说 视频播放
2018-01-26 Selenium Webdriver弹出框 微博分享的内容控制与结果生成
2018-01-26 线程的终止
2017-01-26 UTF-8
2017-01-26 CSS
点击右上角即可分享
微信分享提示