Skip to content

Commit 806e824

Browse files
committed
chore: explicit benchmark
1 parent 75d4376 commit 806e824

File tree

3 files changed

+160
-108
lines changed

3 files changed

+160
-108
lines changed

README.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,43 +22,43 @@ so that a process could put many request to the IO queue, and other process cou
2222

2323
## Performance Testing
2424

25-
The source code bench_test.go, doing a performance comparison between shmipc and unix domain in ping-pong scenario with different package size. The result is as follows: having a performance improvement whatever small package or large package.
25+
The source code bench_test.go, doing a performance comparison between shmipc and unix domain in ping-pong scenario with different package size. The result is as follows: the performance of small packet scenarios is comparable and the performance of large packet scenarios is significantly improved.
2626

2727
```
2828
go test -bench=BenchmarkParallelPingPong -run BenchmarkParallelPingPong
2929
goos: linux
3030
goarch: amd64
3131
pkg: github.com/cloudwego/shmipc-go
32-
cpu: Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
33-
BenchmarkParallelPingPongByShmipc64B-40 733821 1970 ns/op 64.97 MB/s 0 B/op 0 allocs/op
34-
BenchmarkParallelPingPongByShmipc512B-40 536190 1990 ns/op 514.45 MB/s 0 B/op 0 allocs/op
35-
BenchmarkParallelPingPongByShmipc1KB-40 540517 2045 ns/op 1001.62 MB/s 0 B/op 0 allocs/op
36-
BenchmarkParallelPingPongByShmipc4KB-40 509047 2063 ns/op 3970.91 MB/s 0 B/op 0 allocs/op
37-
BenchmarkParallelPingPongByShmipc16KB-40 590398 1996 ns/op 16419.46 MB/s 0 B/op 0 allocs/op
38-
BenchmarkParallelPingPongByShmipc32KB-40 607756 1937 ns/op 33829.82 MB/s 0 B/op 0 allocs/op
39-
BenchmarkParallelPingPongByShmipc64KB-40 609824 1995 ns/op 65689.31 MB/s 0 B/op 0 allocs/op
40-
BenchmarkParallelPingPongByShmipc256KB-40 622755 1793 ns/op 292363.56 MB/s 0 B/op 0 allocs/op
41-
BenchmarkParallelPingPongByShmipc512KB-40 695401 1993 ns/op 526171.77 MB/s 0 B/op 0 allocs/op
42-
BenchmarkParallelPingPongByShmipc1MB-40 538208 1873 ns/op 1119401.64 MB/s 0 B/op 0 allocs/op
43-
BenchmarkParallelPingPongByShmipc4MB-40 606144 1891 ns/op 4436936.93 MB/s 0 B/op 0 allocs/op
44-
BenchmarkParallelPingPongByUds64B-40 446019 2657 ns/op 48.18 MB/s 0 B/op 0 allocs/op
45-
BenchmarkParallelPingPongByUds512B-40 450124 2665 ns/op 384.30 MB/s 0 B/op 0 allocs/op
46-
BenchmarkParallelPingPongByUds1KB-40 446389 2680 ns/op 764.29 MB/s 0 B/op 0 allocs/op
47-
BenchmarkParallelPingPongByUds4KB-40 383552 3093 ns/op 2648.83 MB/s 1 B/op 0 allocs/op
48-
BenchmarkParallelPingPongByUds16KB-40 307816 3884 ns/op 8436.27 MB/s 8 B/op 0 allocs/op
49-
BenchmarkParallelPingPongByUds64KB-40 103027 10259 ns/op 12776.17 MB/s 102 B/op 0 allocs/op
50-
BenchmarkParallelPingPongByUds256KB-40 25286 46352 ns/op 11311.01 MB/s 1661 B/op 0 allocs/op
51-
BenchmarkParallelPingPongByUds512KB-40 9788 122873 ns/op 8533.84 MB/s 8576 B/op 0 allocs/op
52-
BenchmarkParallelPingPongByUds1MB-40 4177 283729 ns/op 7391.38 MB/s 40178 B/op 0 allocs/op
53-
BenchmarkParallelPingPongByUds4MB-40 919 1253338 ns/op 6693.01 MB/s 730296 B/op 1 allocs/op
32+
cpu: Intel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHz
33+
BenchmarkParallelPingPongByShmipc64B-8 144470 7740 ns/op 25.84 MB/s 272 B/op 6 allocs/op
34+
BenchmarkParallelPingPongByShmipc512B-8 145243 8727 ns/op 159.51 MB/s 1170 B/op 6 allocs/op
35+
BenchmarkParallelPingPongByShmipc1KB-8 137221 11467 ns/op 240.69 MB/s 2199 B/op 6 allocs/op
36+
BenchmarkParallelPingPongByShmipc4KB-8 67123 16574 ns/op 660.78 MB/s 8403 B/op 6 allocs/op
37+
BenchmarkParallelPingPongByShmipc16KB-8 37604 34197 ns/op 1278.49 MB/s 33711 B/op 6 allocs/op
38+
BenchmarkParallelPingPongByShmipc64KB-8 12418 97118 ns/op 1799.79 MB/s 138413 B/op 6 allocs/op
39+
BenchmarkParallelPingPongByShmipc256KB-8 3885 347648 ns/op 2010.89 MB/s 561896 B/op 7 allocs/op
40+
BenchmarkParallelPingPongByShmipc512KB-8 2122 567535 ns/op 2463.51 MB/s 1126969 B/op 7 allocs/op
41+
BenchmarkParallelPingPongByShmipc1MB-8 1147 1078216 ns/op 2593.39 MB/s 2258771 B/op 7 allocs/op
42+
BenchmarkParallelPingPongByShmipc4MB-8 302 4163412 ns/op 2686.46 MB/s 9185775 B/op 8 allocs/op
43+
BenchmarkParallelPingPongByUds64B-8 227320 5523 ns/op 36.21 MB/s 720 B/op 10 allocs/op
44+
BenchmarkParallelPingPongByUds512B-8 123703 8154 ns/op 170.72 MB/s 3988 B/op 10 allocs/op
45+
BenchmarkParallelPingPongByUds1KB-8 100774 10796 ns/op 255.66 MB/s 7837 B/op 10 allocs/op
46+
BenchmarkParallelPingPongByUds4KB-8 39502 31889 ns/op 343.44 MB/s 33147 B/op 10 allocs/op
47+
BenchmarkParallelPingPongByUds16KB-8 10116 114273 ns/op 382.59 MB/s 134418 B/op 10 allocs/op
48+
BenchmarkParallelPingPongByUds64KB-8 5803 216532 ns/op 807.23 MB/s 521737 B/op 11 allocs/op
49+
BenchmarkParallelPingPongByUds256KB-8 2078 520211 ns/op 1343.84 MB/s 2043899 B/op 11 allocs/op
50+
BenchmarkParallelPingPongByUds512KB-8 1237 892046 ns/op 1567.33 MB/s 4061270 B/op 11 allocs/op
51+
BenchmarkParallelPingPongByUds1MB-8 703 2626436 ns/op 1064.65 MB/s 8087850 B/op 11 allocs/op
52+
BenchmarkParallelPingPongByUds4MB-8 171 5893266 ns/op 1897.90 MB/s 33747030 B/op 13 allocs/op
5453
PASS
55-
ok github.com/cloudwego/shmipc 42.138s
54+
ok github.com/cloudwego/shmipc-go 43.834s
5655
5756
```
5857

5958
- BenchmarkParallelPingPongByUds, the ping-pong communication base on Unix domain socket.
6059
- BenchmarkParallelPingPongByShmipc, the ping-pong communication base on shmipc.
6160
- the suffix of the testing case name is the package size of communication, which from 64 Byte to 4 MB.
61+
- Stream.BufferWriter() and Stream.BufferReader() provide buffer read-write interfaces for shared memory, where the ReadBytes() and Reserve() methods can be used for zero-copy read and write.
6262

6363
### Quick start
6464

README_CN.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,42 +18,42 @@ Shmipc在共享内存中引入了一个IO队列来描述通讯数据的元信息
1818

1919
## 性能测试
2020

21-
源码中 bench_test.go 进行了Shmipc与Unix domain socket在ping-pong场景下不同数据包大小的性能对比,结果如下所示: 从小包到大包均有性能提升
21+
源码中 bench_test.go 进行了Shmipc与Unix domain socket在ping-pong场景下不同数据包大小的性能对比,结果如下所示: 小包场景性能相当,包越大Shmipc的性能优势越明显
2222

2323
```
2424
go test -bench=BenchmarkParallelPingPong -run BenchmarkParallelPingPong
2525
goos: linux
2626
goarch: amd64
2727
pkg: github.com/cloudwego/shmipc-go
28-
cpu: Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
29-
BenchmarkParallelPingPongByShmipc64B-40 733821 1970 ns/op 64.97 MB/s 0 B/op 0 allocs/op
30-
BenchmarkParallelPingPongByShmipc512B-40 536190 1990 ns/op 514.45 MB/s 0 B/op 0 allocs/op
31-
BenchmarkParallelPingPongByShmipc1KB-40 540517 2045 ns/op 1001.62 MB/s 0 B/op 0 allocs/op
32-
BenchmarkParallelPingPongByShmipc4KB-40 509047 2063 ns/op 3970.91 MB/s 0 B/op 0 allocs/op
33-
BenchmarkParallelPingPongByShmipc16KB-40 590398 1996 ns/op 16419.46 MB/s 0 B/op 0 allocs/op
34-
BenchmarkParallelPingPongByShmipc32KB-40 607756 1937 ns/op 33829.82 MB/s 0 B/op 0 allocs/op
35-
BenchmarkParallelPingPongByShmipc64KB-40 609824 1995 ns/op 65689.31 MB/s 0 B/op 0 allocs/op
36-
BenchmarkParallelPingPongByShmipc256KB-40 622755 1793 ns/op 292363.56 MB/s 0 B/op 0 allocs/op
37-
BenchmarkParallelPingPongByShmipc512KB-40 695401 1993 ns/op 526171.77 MB/s 0 B/op 0 allocs/op
38-
BenchmarkParallelPingPongByShmipc1MB-40 538208 1873 ns/op 1119401.64 MB/s 0 B/op 0 allocs/op
39-
BenchmarkParallelPingPongByShmipc4MB-40 606144 1891 ns/op 4436936.93 MB/s 0 B/op 0 allocs/op
40-
BenchmarkParallelPingPongByUds64B-40 446019 2657 ns/op 48.18 MB/s 0 B/op 0 allocs/op
41-
BenchmarkParallelPingPongByUds512B-40 450124 2665 ns/op 384.30 MB/s 0 B/op 0 allocs/op
42-
BenchmarkParallelPingPongByUds1KB-40 446389 2680 ns/op 764.29 MB/s 0 B/op 0 allocs/op
43-
BenchmarkParallelPingPongByUds4KB-40 383552 3093 ns/op 2648.83 MB/s 1 B/op 0 allocs/op
44-
BenchmarkParallelPingPongByUds16KB-40 307816 3884 ns/op 8436.27 MB/s 8 B/op 0 allocs/op
45-
BenchmarkParallelPingPongByUds64KB-40 103027 10259 ns/op 12776.17 MB/s 102 B/op 0 allocs/op
46-
BenchmarkParallelPingPongByUds256KB-40 25286 46352 ns/op 11311.01 MB/s 1661 B/op 0 allocs/op
47-
BenchmarkParallelPingPongByUds512KB-40 9788 122873 ns/op 8533.84 MB/s 8576 B/op 0 allocs/op
48-
BenchmarkParallelPingPongByUds1MB-40 4177 283729 ns/op 7391.38 MB/s 40178 B/op 0 allocs/op
49-
BenchmarkParallelPingPongByUds4MB-40 919 1253338 ns/op 6693.01 MB/s 730296 B/op 1 allocs/op
28+
cpu: Intel(R) Xeon(R) Platinum 8260 CPU @ 2.40GHz
29+
BenchmarkParallelPingPongByShmipc64B-8 144470 7740 ns/op 25.84 MB/s 272 B/op 6 allocs/op
30+
BenchmarkParallelPingPongByShmipc512B-8 145243 8727 ns/op 159.51 MB/s 1170 B/op 6 allocs/op
31+
BenchmarkParallelPingPongByShmipc1KB-8 137221 11467 ns/op 240.69 MB/s 2199 B/op 6 allocs/op
32+
BenchmarkParallelPingPongByShmipc4KB-8 67123 16574 ns/op 660.78 MB/s 8403 B/op 6 allocs/op
33+
BenchmarkParallelPingPongByShmipc16KB-8 37604 34197 ns/op 1278.49 MB/s 33711 B/op 6 allocs/op
34+
BenchmarkParallelPingPongByShmipc64KB-8 12418 97118 ns/op 1799.79 MB/s 138413 B/op 6 allocs/op
35+
BenchmarkParallelPingPongByShmipc256KB-8 3885 347648 ns/op 2010.89 MB/s 561896 B/op 7 allocs/op
36+
BenchmarkParallelPingPongByShmipc512KB-8 2122 567535 ns/op 2463.51 MB/s 1126969 B/op 7 allocs/op
37+
BenchmarkParallelPingPongByShmipc1MB-8 1147 1078216 ns/op 2593.39 MB/s 2258771 B/op 7 allocs/op
38+
BenchmarkParallelPingPongByShmipc4MB-8 302 4163412 ns/op 2686.46 MB/s 9185775 B/op 8 allocs/op
39+
BenchmarkParallelPingPongByUds64B-8 227320 5523 ns/op 36.21 MB/s 720 B/op 10 allocs/op
40+
BenchmarkParallelPingPongByUds512B-8 123703 8154 ns/op 170.72 MB/s 3988 B/op 10 allocs/op
41+
BenchmarkParallelPingPongByUds1KB-8 100774 10796 ns/op 255.66 MB/s 7837 B/op 10 allocs/op
42+
BenchmarkParallelPingPongByUds4KB-8 39502 31889 ns/op 343.44 MB/s 33147 B/op 10 allocs/op
43+
BenchmarkParallelPingPongByUds16KB-8 10116 114273 ns/op 382.59 MB/s 134418 B/op 10 allocs/op
44+
BenchmarkParallelPingPongByUds64KB-8 5803 216532 ns/op 807.23 MB/s 521737 B/op 11 allocs/op
45+
BenchmarkParallelPingPongByUds256KB-8 2078 520211 ns/op 1343.84 MB/s 2043899 B/op 11 allocs/op
46+
BenchmarkParallelPingPongByUds512KB-8 1237 892046 ns/op 1567.33 MB/s 4061270 B/op 11 allocs/op
47+
BenchmarkParallelPingPongByUds1MB-8 703 2626436 ns/op 1064.65 MB/s 8087850 B/op 11 allocs/op
48+
BenchmarkParallelPingPongByUds4MB-8 171 5893266 ns/op 1897.90 MB/s 33747030 B/op 13 allocs/op
5049
PASS
51-
ok github.com/cloudwego/shmipc 42.138s
50+
ok github.com/cloudwego/shmipc-go 43.834s
5251
```
5352

5453
- BenchmarkParallelPingPongByUds,基于Unix domain socket进行ping-pong通讯。
5554
- BenchmarkParallelPingPongByShmipc,基于Shmipc进行ping-pong通讯。
5655
- 后缀为ping-pong的数据包大小, 从 64 Byte ~ 4MB 不等。
56+
- Stream.BufferWriter()和Stream.BufferReader()提供了共享内存的buffer读写接口,其中使用ReadBytes()和Reserve()方法可以进行零拷贝的读和写.
5757

5858
### 快速开始
5959

0 commit comments

Comments
 (0)