[Из песочницы] Сравнение взятие из кэша одного и того же файла с помощью fs.readFileSync и fs.readFile

Комментарии 9

  • 12.09.17 в 16:15

    +1

    1) Мне думается, что вы здесь намеряли не скорость чтения файла, а скорость взятия файла из кэша. Нужно читать разные файлы, а не один и тот же
    2) Какой смысл теста без указания ОС, типа носителя и файловой системы? Там тоже результат может отличаться в разы!
  • 12.09.17 в 16:33

    0

    Почему Multithread loop readFileSync дает такой низкий результат? Это очень странно. Возможно, тесту для исполнения попросту не хватало памяти? Или антивирус шалил?


    Надо было попробовать создавать процессы заранее, и через fork вместо execFile, а в тесте выдавать процессам задания.

  • b7619fe4dce6ed04d6970d30bb3f62da_small.p

    12.09.17 в 17:07

    0

    Вроде как суть в том, что при readFile мы можем запустить другие операции (реагировать на http-запросы, посылать запрос в БД или там считать факториал), а при readFileAsync — нет.

    • 3fd5bd5f7e10f5a03824571a4f43b134_small.j

      12.09.17 в 17:43

      0

      А не наоборот?
    • 12.09.17 в 17:44

      0

      readFileAsync
      => readFileSync
  • 12.09.17 в 17:09

    +1

    Данный бенчмарк, как верно заметили выше, измеряет скорость взятия одного файла с одного диска.


    Преимущество асинхронных IO запросов раскроется только если одновременно читать/писать файлы с разных дисков, разных сетевых подключений и так далее.

    • 12.09.17 в 17:14

      0

      На самом деле все еще хуже. Нет смысла читать один и тот же файл с диска много раз: надо прочесть его 1 раз и использовать. Это будет еще быстрее.


      Если же файл нельзя прочитать и запомнить — значит, он слишком большой. Но тогда и читать его в память целиком тоже нельзя — нужно использовать потоковое чтение. А у него синхронной версии просто нет.

  • 12.09.17 в 19:52

    0

    Что-то мне подсказывает, что для реально больших (100 мб и больше) файлов ещё сильно взыграет hdd/ssd эффект — грубо говоря multithread read на hdd должен загнуться по отношению к single thread, а на ssd — наоборот, вырасти слегка.
    • 12.09.17 в 19:58

      0

      multithread read на hdd тоже может вырасти от одновременности, благодаря появлению у дискового драйвера возможности выбирать какой блок читать первее. Но это только при условии достаточного размера файловых буферов.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

© Habrahabr.ru