2016-09-17 8 views
2

Я разрабатываю математическое веб-приложение (http://www-fourier.ujf-grenoble.fr/%7eparisse/xcasen.html), скомпилированное из C++ в javascript от emscripten 1.34.1. Производительность хороша внутри Firefox 45, например, факторинг 2^128 + 1 до 59649589127497217 × 5704689200685129054721 по ifactor (2^128 + 1) занимает 0,1 с == время (ifactor (2^128 + 1)) на моем Mac с Firefox 45 Но внутри Firefox 48 (а также Firefox в ночное время) он намного медленнее, от 10 * до 20 * медленнее для первого запуска, в следующих прогонах от 2 * до 10 * медленнее): [ссылка для теста] (http://www-fourier.ujf-grenoble.fr/%7eparisse/xcasen.html#+ifactor(2^128 + 1) & + время (ifactor (2^128 + 1) &)asm.js 10 * медленнее в firefox 48, чем firefox 45

Связано ли это с версией emscripten? Есть ли обходной путь (за исключением того, что он говорит моему пользователю о снижении скорости установки Firefox и прекращении обновления)?

ответ

4

Похоже, ваше приложение использует рост памяти asm.js (опция ALLOW_MEMORY_GROWTH emcc). Браузеры имеют decided to stop supporting that, что означает, что asm.js + рост памяти больше не получает оптимизации asm.js.

Если вы можете избежать использования памяти, то приложение должно работать с полной скоростью asm.js, как было раньше.

+0

Действительно, замена -s ALLOW_MEMORY_GROWTH = 1 на -s TOTAL_MEMORY = 64000000, похоже, устраняет проблему, спасибо! –