檔案IO操作開發筆記(一):使用Qt的QFile對磁碟檔案儲存進行效能測試以及測試工具
前言
補充
第一版本測試v1.0.0
關於對於“檔案開啟次數屬性”的忽略
使用QFile測試結果
USB3.0行動硬碟測試結果
M.2主機板上SSD測試結果
使用QFile(每次寫後用flush)測試結果
USB3.0行動硬碟測試結果
M.2主機板上SSD測試結果
關鍵原始碼
void FileIoTestManager::slot_optFileUseQtQFile(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')); QFile file(filePath); if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) { message(QString(" 第%1次建立檔案失敗").arg(loopIndex + 1)); continue; } writeFileTime = QDateTime::currentDateTime().toMSecsSinceEpoch(); for(int writeIndex = 0; writeIndex < loopWrite; writeIndex++) {// message(QString(" 第%1次寫入檔案,寫入長度%2位元組").arg(writeIndex + 1).arg(dataSize)); int size = 0; while(size < byteArray.size()) { int len = file.write(byteArray.mid(size)); if(len < 0) { message(QString(" 第%1次寫入檔案,寫入失敗").arg(writeIndex + 1)); message(QString("==========================測試失敗==============================")); break; }// message(QString(" 第%1次寫入檔案,寫入成功").arg(writeIndex + 1)); if(flush) { file.flush(); } size += len; if(_stop) { file.close(); message(QString("==========================測試手動停止===========================")); _stop = false; emit signal_finished(); return; } } if(_stop) { file.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)); file.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;}
工程模板
後續
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010283/viewspace-2930589/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 檔案IO操作開發筆記(二):使用Cpp的ofstream對磁碟檔案儲存進行效能測試及工具筆記
- 11,檔案測試(perl筆記)筆記
- 效能測試: 編寫一個 Locust 檔案
- 使用jmeter測試工具完成檔案的上傳JMeter
- 使用jmeter測試工具完成檔案的下載JMeter
- 使用YCSB工具工具進行cassandra效能測試
- 使用Bonnie進行系統IO效能測試 (zt)
- 各個資料庫存二進位制大檔案的效能測試資料庫
- NFS 網路檔案系統測試筆記NFS筆記
- windows下測試IO效能的工具Windows
- 使用Iperf工具進行網路效能測試
- 檔案上傳測試
- 測試上傳檔案
- 使用Jest對原生TypeScript專案進行UI測試TypeScriptUI
- 建立測試用例以及測試結果儲存
- 【星雲測試】開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試框架
- 測試恢復5==使用2進位制形式檔案恢復控制檔案
- 開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試框架
- 控制檔案恢復測試
- linux下如何使用檔案來模擬硬碟進行ASM測試Linux硬碟ASM
- 滲透測試對檔案包含漏洞網站檢測網站
- 【java】使用jprofiler進行效能測試Java
- Orion - oracle提供的測試io效能的工具Oracle
- 使用DG庫資料檔案建開發測試庫步驟
- Golang 專案中如何對 API 進行測試?GolangAPI
- 使用python對oracle進行簡單效能測試PythonOracle
- 使用tpcc-mysql對mysql進行TPCC效能測試MySql
- Postmark測試後端儲存效能後端
- 【星雲測試】開發者測試-採用精準測試工具對Spring Boot應用進行測試Spring Boot
- 【星雲測試】開發者測試-採用精準測試工具對SpringBoot應用進行測試Spring Boot
- php連線mssql測試檔案PHPSQL
- JDK安裝及測試檔案JDK
- 使用dbms_profiler測試儲存過程效能儲存過程
- 【轉】Orion - oracle提供的測試io效能的工具Oracle
- YCSB效能測試工具使用
- 【PG效能測試】pgbench效能測試工具簡單使用
- 使用 Sysbench 進行 Linux 效能測試Linux
- 檔案IO操作