關於文件編程中的函數性能考慮

關於文件編程的函數分成兩種方式

  1. 系統調用,就是system called interface  採用系統提供的接口進行文件的編寫。
  2. 庫函數,不依賴於當前的RUNNING system 只是依賴庫函數,這種方式具有良好的可移植性。
對於以上的兩種方式,本人當然推薦第二種方式,文件編程不外乎就是打開,讀,寫,定位,關閉操作

其中讀寫函數運用的好壞直接影響了文件的讀寫性能,關於文件讀寫性能好壞,那就是對緩衝區BUF的使用情況的把握,比如我們的使用的文件系統(file system ) 是EXT2 該系統使用的塊大小是4k,這時我們的緩衝區應該是多少呢?

通過以下程序的測試!

#inclue 


#define BUFSIZE 4096


int main(void)
{
    int n;
    char buf(BUFSIZE);
    
    while((n=read(STDIN_FILENO,buf,BUFSIZE)) >0)
        {
            if(wirte(STDOUT_FILENO,buf,n) != n)
                err_sys("write error!");
                
        }
        
    if(n < 0)
        err_sys("read error!");
    
    return 0;
    
}
    



最終發現是使用和文件系統的塊大小一致是最好的,所以是4K BUF 最合適!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章