フラッシュドライブ速度

こんにちは、愛する鉄の愛好家!

問題


ネットワークでは、USBフラッシュドライブの特定のモデル(一般的なフォークフラッシュドライブ)の速度に関する情報を見つけることはできません。 この情報の秘密の理由は私には知られていない。

私たちの決定


フラッシュドライブをテストし、結果をサイトに送信するためのユーティリティが開発されました。
画像


ベンチマーク


アプリケーションは.NET Framework 2.0で記述されています。 低レベルの操作では、.dllモジュールはC ++で記述されています。
目標は、さまざまなサイズのカードブロックの読み取りと書き込みの速度を評価することでした。 この問題を解決するために、WinAPI関数CreateFile、WriteFile、ReadFileを使用しました。 ファイルを作成するときに、FILE_FLAG_NO_BUFFERINGフラグが設定されました。これは、OSに対して、どの種類のファイルキャッシュも使用しないことを示します。
ブロックを書き込むためのテストは次のとおりです。
__declspec(dllexport) double WriteBench(LPCSTR path, long size, long count, char * ErrorMessage)
{
HRTimer timer; int i;
double elapsed;
HANDLE hFile; DWORD dwResult;
void * buffer = malloc(size);
memset(buffer, -1, size);
hFile = CreateFileA(path,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_FLAG_NO_BUFFERING,
NULL);

if (hFile == INVALID_HANDLE_VALUE)
{
sprintf(( char *)ErrorMessage, "Could not open file (error %d)\n" , GetLastError());
return 0;
}

timer.StartTimer();
for (i =0 ; i< count; i++){
if (!WriteFile(hFile, buffer, size, &dwResult, NULL))
{
sprintf(( char *)ErrorMessage, "Could not write to file (error %d)\n" , GetLastError());
return 0;
}
}
elapsed = timer.StopTimer();

CloseHandle(hFile);
DeleteFileA(path);
free(buffer);
return elapsed;
}


* This source code was highlighted with Source Code Highlighter .


UsbFlashSpeed.comプロジェクトをご覧になり、発見された欠陥を指摘していただければ幸いです。
この投稿は、サービスを事前にテストし、重要なコメントを収集するためのものです! サービスの発表は後で行われます。

Source: https://habr.com/ru/post/J95384/


All Articles