日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

转:文件系统read,write缓存,有点意思

發(fā)布時(shí)間:2025/3/18 windows 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转:文件系统read,write缓存,有点意思 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

當(dāng)我們?cè)趌inux系統(tǒng)下寫程序的時(shí)候,經(jīng)常會(huì)讀文件或者寫文件,既然要操作文件,就會(huì)用文件操作函數(shù),其中涉及讀寫的不乏有read/write或者fread/fwrite,但是我們應(yīng)該選擇哪一種呢,少安毋躁,在決定選用哪一種之前,先讓我們看看它們有哪些不同點(diǎn),然后再做決定,你說呢?

一、??fread和read的不同點(diǎn)

1)

read/write??操作文件描述符?(int型)
fread/fwrite?操作文件流???(FILE*型)

2)
fread/fwrite?調(diào)用?read/write
read/write是系統(tǒng)調(diào)用,要自己分配緩存,也就是說效率要自己根據(jù)實(shí)際情況來控制。
fread/fwrite是標(biāo)準(zhǔn)輸入/輸出函數(shù),不需要自己分配緩存,對(duì)于一般情況具有較高的效率。

?

?

二、???實(shí)例分析:
2.1??待測(cè)文件,大小是8K,如圖1?。
?????????????????????
???????????????????????????????????????????????????? 圖1

說明:待測(cè)文件可以用shell腳本分享自動(dòng)生成,或者手動(dòng)編輯一個(gè),最好是嘗試用前者。

?

2.2???用read讀取待測(cè)文件test.txt

通過分析計(jì)算,如果用read讀待測(cè)文件,且只分配2K的緩存,則要將此文件讀出需要做4次系統(tǒng)調(diào)用來實(shí)際從磁盤上讀出。

好的,接下來我們通過實(shí)例來驗(yàn)證,驗(yàn)證程序代碼如圖2
?????????????????????????????????????????????????????????????????????????????? 圖2

編譯運(yùn)行,通過結(jié)果驗(yàn)證,如圖3、圖4、圖5、圖6

?????????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????? 圖3
?????????????????????????????
??????????????????????????????????????????????????????????????????????????????????? 圖4
????????????????????????????
?????????????????????????????????????????????????????????????????????????????????? 圖5
???????????????????????????
???????????????????????????????????????????????????????????????????????????????? 圖6
???????????? 說明:上面的輸出結(jié)果,是預(yù)先在驗(yàn)證程序里寫好的。

?用strace命令跟蹤驗(yàn)證如下:
????????????
?????????????????????????????????????? 圖7
????????????
??????????????????????????????????????????? 圖8
????????????
???????????????????????????????????????????? 圖9
????????? ??
??????????????????????????????????????????? 圖10

2.3???用fread讀取待測(cè)文件test.txt

??????如果用fread/fwrite,則系統(tǒng)自動(dòng)分配緩存(一般大于8K),則讀出此文件只要一次系統(tǒng)調(diào)用從磁盤上讀出。也就是用read/write要讀4次磁盤,而用fread/fwrite則只要讀1次磁盤。效率比read/write要高4倍。如果程序?qū)?nèi)存有限制,則用read/write比較好。

?

驗(yàn)證程序代碼如圖11
?????????????????????????????

?????????????????????????????????????????????????????????????????? 圖11

編譯運(yùn)行結(jié)果如圖12,驗(yàn)證結(jié)果
???????????????????????????
????????????????????????????????????????????????????????????????? 圖12

?

用strace命令跟蹤驗(yàn)證如圖13

????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????? 圖13

以上即為今天對(duì)這兩種讀文件方式的實(shí)例分析,接下來我會(huì)繼續(xù)做寫文件的分析。

轉(zhuǎn)載于:https://my.oschina.net/linjiezang/blog/2885480

總結(jié)

以上是生活随笔為你收集整理的转:文件系统read,write缓存,有点意思的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。