Медленно ли работает WebAssembly с большими функциями? - PullRequest
0 голосов
/ 01 мая 2018

Emscripten имеет флаг OUTLINING_LIMIT для получения меньших функций, которые могут быть оптимизированы JIT браузера, в отличие от огромных функций, которые интерпретируются. Применимо ли это также к WASM, в том смысле, что WASM с большими функциями будет работать медленнее?

1 Ответ

0 голосов
/ 01 мая 2018

Указанная вами документация является неточной для текущих реализаций WebAssembly. Только у Chakra есть интерпретатор, и любая «горячая» функция JIT-компилируется независимо от ее размера. Реализация JavaScript в JavaScript WebAssembly только для JIT-компиляций, а «горячие» функции перекомпилируются на более высоком уровне оптимизации.

Как говорится, выделение имеет несколько преимуществ:

  • Двоичный файл .wasm может стать меньше. Это означает, что он загружается быстрее.
  • Теоретически, движки могли бы повторно встроить небольшие выделенные функции, если бы мы часто видели их в Интернете, поэтому вы не получите потери производительности при выделении.
  • Большие функции иногда занимают больше времени для JIT-компиляции, часто компиляция нелинейная (хотя, опять же, движки меняются со временем и могут лучше обрабатывать большие функции, если это станет распространенной проблемой).
  • Механизмы часто компилируются параллельно на границе каждой функции, поэтому более мелкие функции лучше компилируются параллельно и больше заполняют конвейер компиляции (особенно ближе к концу компиляции, если у вас осталось всего несколько больших функций для компиляции ядра не будут использованы). Это довольно незначительный момент, я бы об этом не беспокоился.

Однако все это постоянно меняется, разработчики движков реагируют на то, что мы видим в Интернете, и настраиваем движок для лучшей обработки реального кода. Часто хорошо делать то, что правильно, и регистрировать ошибки на каждом движке, если вы видите патологии. Здесь это может означать уменьшение размера загрузки с помощью выделения контуров и ожидание хорошего повторного наложения.

...