檔案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對磁碟檔案儲存進行效能測試及工具筆記
- 使用jmeter測試工具完成檔案的上傳JMeter
- 使用jmeter測試工具完成檔案的下載JMeter
- 各個資料庫存二進位制大檔案的效能測試資料庫
- 檔案上傳測試
- 使用 jMeter 對 SAP Spartacus 進行併發效能測試JMeter
- linux下如何使用檔案來模擬硬碟進行ASM測試Linux硬碟ASM
- 【星雲測試】開發者測試-採用精準測試工具對SpringBoot應用進行測試Spring Boot
- 開發者測試-採用精準測試工具對Spring Boot應用進行測試Spring Boot
- 檔案IO操作
- 【星雲測試】開發者測試-採用精準測試工具對Spring Boot應用進行測試Spring Boot
- 使用Loadrunner進行效能測試
- 滲透測試對檔案包含漏洞網站檢測網站
- 04 磁碟儲存和檔案系統
- 使用python對oracle進行簡單效能測試PythonOracle
- 開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試框架
- 【星雲測試】開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試框架
- 開發者測試(4)-採用精準測試工具對dubbo微服務應用進行測試微服務
- dotnet 測試在 UOS Linux 上使用 Process Start 開啟檔案的行為Linux
- 使用 Sysbench 進行 Linux 效能測試Linux
- 檔案儲存NAS備份服務開放公測
- Java 檔案 IO 操作Java
- Linux檔案IO操作Linux
- 開發者測試(3)-採用精準測試工具對springcloud微服務應用進行穿透測試SpringGCCloud微服務穿透
- Golang 專案中如何對 API 進行測試?GolangAPI
- 【星雲測試】開發者測試(3)-採用精準測試工具對springcloud微服務應用進行穿透測試SpringGCCloud微服務穿透
- 軟體管理,磁碟儲存,檔案系統以及網路協議協議
- Playwright使用Typescript實現在測試case檔案中呼叫另一個檔案中的方法TypeScript
- 【PG效能測試】pgbench效能測試工具簡單使用
- 檔案儲存
- Flutter測試(二):在專案中進行 Widget 測試Flutter
- android測試常用的adb命令以及進行Monkey測試Android
- java IO流 對檔案操作的程式碼集合Java
- 軟體測試常用檔案之XMLXML
- Electron 開啟儲存檔案對話方塊
- 效能測試專案篇
- python file 檔案操作筆記Python筆記
- fio 命令 測試IO效能