實際測試下檔案IO,有乙個感性認識

2021-06-07 12:24:00 字數 2310 閱讀 6587

環境(戴爾伺服器):

cpu:4

核3.1ghz

;記憶體:

4g

1.       

寫檔案速度測試結果

(10s)

環境:死迴圈進行寫檔案,隨著迴圈輪詢每個檔案,每次迴圈把內容寫入輪到的這個檔案

條件(輪詢寫檔案的個數)結果

(檔案大小總和:單位g)1

1.50

21.44

1001.39

5001.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 50000910

usleep 500076

usleep 012

結論:

tcp發包執行時間與

udp發包時間差不多,但是收包要比

udp慢很多

tcp的recv cpu

時間較多。

3.       

udp通訊

recv

和send

時間比較

環境:udp

伺服器和客戶端

(非阻塞),

每次傳送

1000

位元組,接收為

4096

位元組 發包間隔

send

函式執行時間

(us)

recv

函式執行時間

(us)

usleep 5000081

usleep 2500081

usleep 500081

usleep 020

結論:通過上面發現,

tcp的發包和

udp在時長上差別不大。但是在收包上要比

udp慢。

cpu消耗也大。

4.       

寫檔案時測試

fwrite

函式執行時間

執行過程:檔案開啟後,連續

fwrite20

次,得到每次呼叫

fwrite

的時間 注意:

(用我自己虛擬機器測試,戴爾伺服器測試過程中沒有出現

)測試得到的結果有可能會全部時間為

0或者部分為

0,而且全部測試過程都有概率出現這種情況,

每次fwrite

的位元組數規律(

呼叫時間較長的是哪幾次

)5001,

9,1710001,

5,9,

13,1720001,

3,5,

7,9,

11,13,

15,17,

1930001,

2,3,

5,6,

7,9,

10,11,

13,14,

16,17,

18,204000

每次呼叫時間都較長

5000

每次呼叫時間都較長

6000

每次呼叫時間都較長

結論:核心

buf:

4096

,每次傳送的資料超過

4096

時,每次傳送呼叫的時間都較長

檔案I O 乙個小程式

編寫乙個檔案複製程式 c語言版本 include include int main int argc,char argv if in fopen argv 1 rb null if out fopen argv 2 wb null while ch getc in eof if ferror in ...

linux怎麼檢視乙個檔案有多少行

linux檢視乙個檔案有多少行的方法 1 登入linux系統,在系統桌面的空白處右擊 2 在彈出的下拉選項裡,點選 開啟終端 選項 3 在開啟的終端中,執行 wc l filename 命令即可檢視。本教程操作環境 red hat enterprise linux 6.1系統 dell g3電腦。l...

IO4 1封裝乙個刪除檔案函式

需求如題。首先,我們需要建立乙個檔案 filename path py.txt try f open filename path,w 寫入模式,會沖刷掉檔案內容 print f.write 作者,黃蓉 f.close except 異常處理 print s檔案找不到 filename path 成功...