send和sendmsg性能測試【sendmsg和send的性能基本同樣,並無獲得優化】

1,摘要:測試send和sendmsg的性能,影響這兩個函數性能的因素主要有發送的字節大小,增長循環次數,從100到10000000(千萬)減小計算偏差
2,基本信息
cat /proc/cpuinfo查看CPU信息,以下:

  Intel(R) Xeon(R) CPU E5-2698 v3 @ 2.30GHzhtml

cat /proc/version 查看操做系統內核版本,以下:linux

  Linux version 3.10.0-327.el7.x86_64c#

cat /proc/meminfo查看內存信息,以下:socket

  MemTotal: 131748016 kB
  MemFree: 42526620 kB
  MemAvailable: 60623924 kB函數

3,具體實驗過程略,可參見:https://www.cnblogs.com/woshare/p/9079965.html性能

4,實驗分析測試

注:X軸字節,Y軸時間,單位微秒優化

結論:網站

1,send和sendmsg的性能基本同樣ui

2,性能隨字節成正比,好比128B~1.55微秒 ,256B~2.57微秒,1024B~8.72微秒,4096B~34.22微秒

3,sendmsg(iovlen=1)和sendmsg(iovlen=4)的在發送相同字節狀況下,性能也是4倍,sendmsg在性能上並沒獲得優化

 

 注:

根據https://blog.csdn.net/zhangskd/article/details/45623759 的分析,send,sendto,sendmsg底層實現基本差很少

send 是特殊的sendto:sendto(fd, buff, len, flags, NULL, 0); 

sendto是iovlen=1的sendmsg

 這是一個查看源碼的網站:https://elixir.bootlin.com/linux/v4.9.102/source/net/socket.c#L1668

相關文章
相關標籤/搜索