Qt---log日誌框架(2)從效能考慮檔案操作
做了一個小的測試工具,可以檢視log,點選檢視log,會選擇系統預設的編輯器開啟log,同時就問了我一個問題,為什麼開啟log後,刪除檔案內的日誌,在產生的日誌就不能寫到日誌裡了?對於這個問題,是由於在寫入日誌的時候,只打開了一次log,對log做操作,破換了log,所以不能繼續寫入。要解決這個問題,只需要在寫入log時,每次開啟一次檔案即可。但是,隨之而來的問題便是頻繁的對檔案執行開啟操作與只打開一次檔案的效率有什麼差異?所以下面做了一個小測試。
分別對寫入檔案10萬次、100萬次,1000萬次,兩者所用時間的差異。
測試結果如下:
10萬次
開始寫入檔案log1
開啟一次檔案傳送所用的時間為: 0.234513
te.tv_usec: 1493280598136496
tv.tv_usec: 1493280597901983
開始寫入檔案log2
頻繁開啟檔案傳送所用的時間為: 0.691914
te.tv_usec: 1493280604584612
tv.tv_usec: 1493280603892698
100萬次
開始寫入檔案log1
開啟一次檔案傳送所用的時間為: 2.2169
te.tv_usec: 1493280901167297
tv.tv_usec: 1493280898950394
開始寫入檔案log2
頻繁開啟檔案傳送所用的時間為: 10.1719
te.tv_usec: 1493280916001532
tv.tv_usec: 1493280905829610
1000萬次
開始寫入檔案log1
開啟一次檔案傳送所用的時間為: 21.2031
te.tv_usec: 1493280994099891
tv.tv_usec: 1493280972896765
開始寫入檔案log2
頻繁開啟檔案傳送所用的時間為: 90.5125
te.tv_usec: 1493281090662242
tv.tv_usec: 1493281000149779
由此可見,頻繁開啟檔案的效率低於只打開一次檔案的效率,大約相差4-5倍。
此測試程式已上傳github:https://github.com/shangFangBaoJian/lianXuShuChuWenJian.git