Пушыстый (_winnie) wrote,
Пушыстый
_winnie

Category:

mmap/fread

Проверил скорость (код по ссылке) работы mmap/fread на FreeBSD 8.2+zfs/Ubuntu 8.04+simfs

Пятигигабайтный файл на FreeBSD считался за 8 / 6.5 секунд при помощи mmap и fread (fread быстрее!!! вроде бы это бага zfs)

На Ubuntu - за 1.1 / 3.5 секунды (mmap ожидаемо быстрей).

Разница есть, но ИМХО польза от непортируемого mmap при чтении будет заметна в редких программах. Типа загружаем 40 гигабайт, используем 1% из них, и тут же выходим, например багфиксинг алгоритма поиска в B-дереве, с постоянным перезапуском. При записи - не знаю, может удобней-быстрей патчить файлик в памяти.

Файл читался из файлового кеша (проверить без кеша не вышло - или рута нет, или /proc/sys/vm/drop_caches - permission denied в OpenVZ), но подозреваю что без кеша разницы не будет.

Под виндой проверить сложнее. На маленьких файлах не интересно и всё мгновенно, а для больших сходу лень писать 64-битный код для ftell/fread, и лень было узнавать грабли компиляции под 64-битный режим.
Проверил (код по ссылке) на гигабайтном файле, Windows7/Visual Studio 2008:
CreateFileMapping - 0.3 секунды, fread - 3.5 секунд.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 36 comments