問題
ネットワークでは、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プロジェクトをご覧になり、発見された欠陥を指摘していただければ幸いです。
この投稿は、サービスを事前にテストし、重要なコメントを収集するためのものです! サービスの発表は後で行われます。