檔案IO操作開發筆記(二):使用Cpp的ofstream對磁碟檔案儲存進行效能測試及工具
前言
版本v1.1.0
測試工具v1.1.0下載地址
使用C++的ofstream測試結果
USB3.0行動硬碟測試結果
M.2主機板上SSD測試結果
使用C++的ofstream(用flush)測試結果
USB3.0行動硬碟測試結果
M.2主機板上SSD測試結果
關鍵程式碼
void FileIoTestManager::slot_optFileUseCppOfstream(int loopTime, int loopWrite, int dataSize, bool flush){ QDir dir; QString dirPath = QString("%1/%2") .arg(QApplication::applicationDirPath()) .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh_mm_ss_zzz")); if(dir.mkpath(dirPath)) { message(QString("建立資料夾成功: %1").arg(dirPath)); }else{ message(QString("建立資料夾失敗: %1").arg(dirPath)); } // 生成資料 message(QString("生成測試資料,資料長度: %1").arg(dataSize)); QByteArray byteArray; byteArray.append(dataSize, 0xFF); message(QString("==========================測試開始==============================")); double totalTime = 0; // 總計時間 double fileTotalTime = 0; // 操作單個檔案總時間 double writeFileTime = 0; // 單個檔案單詞寫入時間 totalTime = QDateTime::currentDateTime().toMSecsSinceEpoch() * 1.0f; for(int loopIndex = 0; loopIndex < loopTime; loopIndex++) { QString filePath = QString("%1/%2_%3") .arg(dirPath) .arg(QDateTime::currentDateTime().toString("hh_mm_ss_zzz")) .arg(loopIndex, 6, 10, QChar('0')); std::ofstream outFile; outFile.open(filePath.toUtf8().constData()); writeFileTime = QDateTime::currentDateTime().toMSecsSinceEpoch(); for(int writeIndex = 0; writeIndex < loopWrite; writeIndex++) {// message(QString(" 第%1次寫入檔案,寫入長度%2位元組").arg(writeIndex + 1).arg(dataSize)); outFile << byteArray.constData(); if(flush) { outFile.flush(); } if(_stop) { outFile.close(); message(QString("==========================測試手動停止===========================")); _stop = false; emit signal_finished(); return; } } writeFileTime = QDateTime::currentDateTime().toMSecsSinceEpoch() - writeFileTime; writeFileTime = writeFileTime / loopWrite; message(QString("每次寫入資料平均耗時(不包含開啟關閉檔案): %1ms").arg(writeFileTime));// message(QString(" 第%1次關閉檔案").arg(loopIndex + 1)); outFile.close(); } message(QString("==========================測試結果==============================")); totalTime = QDateTime::currentDateTime().toMSecsSinceEpoch() - totalTime; fileTotalTime = totalTime * 1.0f / loopTime; message(QString("操作建立檔案次數: %1, 單個檔案迴圈寫入次數: %2, 每次寫入固定資料長度: %3, %4") .arg(loopTime) .arg(loopWrite) .arg(dataSize) .arg(flush ? "每次使用flush" : "不使用flush")); message(QString("總耗時: %1ms").arg(totalTime)); message(QString("單個檔案迴圈寫入平均總耗時(包括開啟關閉檔案): %1ms").arg(fileTotalTime)); message(QString("每次寫入資料平均耗時(包括開啟關閉檔案: %1ms").arg(fileTotalTime * 1.0f / loopWrite)); message(QString("==========================測試結束==============================")); emit signal_finished(); return;}
工程模板v1.1.0
後續
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010283/viewspace-2931538/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 檔案IO操作開發筆記(一):使用Qt的QFile對磁碟檔案儲存進行效能測試以及測試工具筆記QT
- 各個資料庫存二進位制大檔案的效能測試資料庫
- c++ 二進位制儲存檔案C++
- 檔案IO操作
- 11,檔案測試(perl筆記)筆記
- 【C#學習筆記】儲存檔案C#筆記
- 04 磁碟儲存和檔案系統
- std::ofstream由二進位制流寫檔案的問題
- Java 檔案 IO 操作Java
- iOS檔案IO操作iOS
- 【Python基礎】Python處理Excel檔案,進行篩選資料、排序等操作及儲存新的Excel檔案PythonExcel排序
- 檔案儲存
- Linux下對檔案進行加密備份的操作記錄Linux加密
- java IO流 對檔案操作的程式碼集合Java
- Electron 開啟儲存檔案對話方塊
- iOS開發 檔案儲存方法彙總iOS
- [BI專案記]-對專案檔案進行規劃
- Linux檔案IO操作Linux
- RAC歸檔配置方案:使用NFS共享儲存儲存歸檔檔案NFS
- 使用jmeter測試工具完成檔案的上傳JMeter
- 使用jmeter測試工具完成檔案的下載JMeter
- 使用GnuPG對檔案進行加密(轉)加密
- Mysql匯出檔案及備份操作筆記MySql筆記
- C++中對檔案進行讀寫操作C++
- Java對檔案的操作及UDP,TCPJavaUDPTCP
- perl 實現shell 命令的檔案儲存操作
- 使用Bonnie進行系統IO效能測試 (zt)
- 二進位制檔案記憶體對映記憶體
- CSV檔案儲存
- 檔案IO操作的最佳實踐
- 資料儲存--檔案儲存
- NFS 網路檔案系統測試筆記NFS筆記
- 塊儲存 檔案儲存 物件儲存物件
- 使用YCSB工具工具進行cassandra效能測試
- 程式執行資訊的非登錄檔儲存類(ini 檔案操作類) (轉)
- 使用 Python 進行穩定可靠的檔案操作Python
- Java 檔案 IO 操作之 DirectIOJava
- c++ IO類,檔案操作C++