フラッシュドライブ速度

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



問題



ネットワークでは、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プロジェクトをご覧になり、発見された欠陥を指摘していただければ幸いです。

この投稿は、サービスを事前にテストし、重要なコメントを収集するためのものです! サービスの発表は後で行われます。



All Articles