初略测试,仅供参考
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 |