環境(戴爾服務器):cpu:4核3.1GHZ; 內存:4G
1. 寫文件速度測試結果(測試時間:10S)
環境:死循環進行寫文件,隨着循環輪詢每個文件,每次循環把內容寫入輪到的這個文件
條件(輪詢寫文件的個數) | 結果(文件大小總和:單位G) |
1 | 1.50 |
2 | 1.44 |
100 | 1.39 |
500 | 1.35 |
1000 | 1.31 |
2000 | 1.24 |
3000 | 1.20 |
5000 | 1.15 |
上面是單線程模式。後面又嘗試了一下多線程模式,發現數據差不多,沒有什麼區別。
結論:
1、 服務器文件IO速度大概是150M/S。
2、 隨着寫文件數目的增多,IO速度減少。這裏是磁盤尋道時間在影響速度。
3、 單個線程即可使IO達到頂峯。說明CPU處理能夠遠比IO處理要快。
結論:隨着讀寫文件的增多,單位時間內寫的速度會降低
2. tcp通信recv和send時間比較
環境:tcp服務器和客戶端(非阻塞), 每次發送和接受的緩衝爲1000字節
發包間隔 | send函數執行時間(us) | recv函數執行時間(us) |
usleep 50000 | 9 | 10 |
usleep 5000 | 7 | 6 |
usleep 0 | 1 | 2 |
結論:tcp發包執行時間與udp發包時間差不多,但是收包要比udp慢很多
tcp的recv cpu時間較多。
3. udp通信recv和send時間比較
環境:udp服務器和客戶端(非阻塞), 每次發送1000字節,接收爲4096字節
發包間隔 | send函數執行時間(us) | recv函數執行時間(us) |
usleep 50000 | 8 | 1 |
usleep 25000 | 8 | 1 |
usleep 5000 | 8 | 1 |
usleep 0 | 2 | 0 |
結論:通過上面發現,TCP的發包和UDP在時長上差別不大。但是在收包上要比udp慢。cpu消耗也大。
4. 寫文件時測試 fwrite函數執行時間
執行過程:文件打開後,連續fwrite20次,得到每次調用fwrite的時間
注意:(用我自己虛擬機測試,戴爾服務器測試過程中沒有出現)測試得到的結果有可能會全部時間爲0或者部分爲0,而且全部測試過程都有概率出現這種情況,
每次fwrite的字節數 | 規律(調用時間較長的是哪幾次) |
500 | 1,9,17 |
1000 | 1,5,9,13,17 |
2000 | 1,3,5,7,9,11,13,15,17,19 |
3000 | 1,2,3,5,6,7,9,10,11,13,14,16,17,18,20 |
4000 | 每次調用時間都較長 |
5000 | 每次調用時間都較長 |
6000 | 每次調用時間都較長 |
結論:內核buf :4096,每次發送的數據超過4096時,每次發送調用的時間都較長