Ответ 1
Это мое мнение:
Прежде всего, asm.js на самом деле не предназначен для написания вручную. Хотя я говорю, что, безусловно, можно написать его, поскольку он имеет валидатор. Нереальная демо - это то, что было скомпилировано в asm.js с emscripten. Также не нужно взаимодействовать с другим кодом вне кода, который компилируется. Таким образом, он генерирует высоко оптимизированный код из-за того, что нереальное демо уже является высоко оптимизированным кодом на С++, оно оптимизируется компилятором и затем получает очередной запуск оптимизаций через asm.js.
Во-вторых, asm.js фактически поддерживается только firefox. Несмотря на то, что все другие браузеры могут выполнять его, но на большинстве он по-прежнему несет штраф за производительность. Это штраф, если вы сравниваете код asm.js, который делает то же самое, что и обычный код javascript. Просто выполните поиск jsperf.com.
Хорошо, это некоторые общие направляющие строки об asm.js. Теперь поговорим о Three.js.
Во-первых, потому что THREE.js должен взаимодействовать с пользовательским кодом, нелегко написать библиотеку asm.js из-за этого множество ограничений (без объектов).
Во-вторых, Three.js не принесет большой производительности в производительности для вычислений, где asm.js силен. Но он будет получать больше от будущих обновлений из браузеров. (например, создание typedarrays в хроме, которая теперь является точкой боли в THREE.js, скоро начнется. V8 issue)
В-третьих, код в asm.js должен управлять собственной памятью. Это означало бы, что THREE.js должен найти способ заставить большие приложения работать с ограниченной памятью. Или сделайте каждое приложение очень голодным.
В-четвертых, сравнение нереальной демонстрации с трио .js немного несправедливо из-за того, что three.js пытается разрешить всем писать 3D-приложения, в то время как нереальный движок является высоко оптимизированным движком для 3D-игр.
Как вы заметили, я в основном против asm.js в three.js. Но это потому, что слишком рано говорить, что лучший способ пойти. Существует высокая вероятность того, что asm.js получит место в три раза. В конечном итоге, но для более ограниченного использования в качестве рендеринга - только, например. Но на данный момент все еще слишком много нерешенных вопросов вокруг asm.js.
Но если вы хотите использовать asm.js и использовать С++, тогда я рекомендую emscripten, который использовался для создания нереальной демонстрации.
Это, конечно, мое мнение. Но я думаю, что это несколько отражает то, что имел в виду @Mr.doob и @WestLangley. И извините за длинный пост.