go tcp VS rust tcp socket性能测试对比

初略测试,仅供参考
client和server在同一台机器(2.2 GHz 六核Intel Core i7/ssd硬盘/16g内存 )

test 1

读写分离(启动两个task/goroutine,一个读一个写),客户端生成文件,客户端从文件中读取数据写入到服务端

在服务端计算速率(收到的bytes/second)

文件20g 每次发送数据4k

Type Rate
go Tcp 574m/s
rust Tcp / async_std 130m/s
rust Tcp / tokio 174m/s

文件20g 每次发送数据40k

Type Rate
go Tcp 1775m/s
rust Tcp / async_std 673m/s
rust Tcp / tokio 542m/s

test 2

读写分离(启动两个task/goroutine) ,客户端不生成文件,客户端直接发送数据到服务端

每次发送的包大小为4k/go buffer为默认4k/ rust buffer为默认8k

Type Rate
go Tcp 560~603m/s
go Tcp / bufio 500m/s
rust Tcp / async_std 1000 m/s
rust Tcp / async_std / BufWriter,BufReader 1280m/s
rust Tcp / tokio 900m/s
rust Tcp / tokio / BufWriter,BufReader 1150m/s

每次发送的包大小为40k/go buffer为默认4k/ rust buffer为默认8k

Type Rate
go Tcp 1192m/s
go Tcp / bufio 1500m/s
rust Tcp / async_std 1444m/s
rust Tcp / async_std/ BufWriter,BufReader 1500m/s
rust Tcp / tokio 934m/s
rust Tcp / tokio / BufWriter,BufReader 1180m/s

test 3

读写不分离(不启动task/goroutine) ,客户端不生成文件,客户端直接发送数据到服务端

每次发送的包大小为4k/go buffer为默认4k/ rust buffer为默认8k

Type Rate
go Tcp 190m/s
go Tcp /bufio 220m/s
rust Tcp / async_std 100m/s
rust Tcp / async_std / BufWriter,BufReader 110m/s
rust Tcp / tokio 129m/s
rust Tcp / tokio / BufWriter,BufReader 143m/s

每次发送的包大小为40k/go buffer为默认4k/ rust buffer为默认8k

Type Rate
go Tcp 2250m/s
go Tcp / bufio 2250m/s
rust Tcp / async_std 676m/s
rust Tcp / async_std / BufWriter,BufReader 780m/s
rust Tcp / tokio 733m/s
rust Tcp / tokio / BufWriter,BufReader 820m/s

猜你喜欢

转载自blog.csdn.net/kk3909/article/details/110774402