Это по дизайну. Иногда он генерирует (см. source code) "almost asm"
вместо "use asm"
, что отключает все оптимизации asm.js. Это происходит, когда скомпилированный код использует некоторые функции (например, this v8 issue), которые не реализованы в браузерах. Для проекта, над которым я сейчас работаю, я заменил "almost asm"
на "use asm"
для Firefox и оставил его как для Chrome, потому что "use asm"
вызвал сильное замедление при запуске.
Таким образом, не стоит просто заменять "almost asm"
на "use asm"
, но иногда это работает нормально. Вы должны тщательно протестировать свое приложение во всех версиях браузера (но убедитесь, что вы тестируете с отключенным devtools), который вам нужно поддерживать - и если он работает, это означает, что у вас есть счастливый случай, который уже реализован: перейдите и замените.
Знаете ли вы, что «используйте asm;» не делает ничего, поэтому вы можете его опустить? –
Я видел такую библиотеку, как [this] (https://github.com/tonyg/js-scrypt/blob/master/browser/scrypt.js), которая при использовании печати в js-консоли asm.js скомпилирована и в факт, что они выглядят довольно быстро. Код, который я компилировал, не имеет никакого использования asm, и на самом деле они не скомпилированы. :/ –
'emcc -O2' должен испускать код asm.js. Вы на последнем emscripten? Вы видите ошибки в командной строке? –