Pull to refresh

Скорость флешек

Reading time 2 min
Views 11K
Здравствуйте уважаемые любители железа!

Проблема


В сети невозможно найти информацию о скорости конкретной модели USB Flash накопителя(в простонародии флешки). Причина секретности этой информации мне не известна.

Наше решение


Была разработана утилита для проведения тестирования флешки и отсылки результатов на сайт.
image


Бенчмарк


Приложение написанно на .NET Framework 2.0. Для низкоуровневых операций написан .dll модуль на C++.
Целью было оценить скорость чтения и записи на карточку блоков разных размеров. Для решения этой задачки я воспользовался WinAPI функциями: CreateFile, WriteFile и ReadFile. При создании файла устанавливался флажок FILE_FLAG_NO_BUFFERING, который указывает ОС, что не следует использовать всякого рода файловые кэши.
Вот так выглядит тест на запись блоков:
__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 и укажете на обнаруженные недостатки.
Это пост для предварительного тестирования сервиса и сбора критических замечаний! Анонс сервиса будет позже.
Tags:
Hubs:
+12
Comments 40
Comments Comments 40

Articles