03.11.2015, 19:09
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Mаxmaxmаximus, лично мне было бы интересно узнать, как использовать АСМ без компилятора и в каких задачах его можно применить. В циклах, типизированных массивах, типизированных переменных - ок. Но хорошо бы узнать, помогает ли асм при работе с объектами (обычными инстансами Object) и как оптимизировать вызов одной функции внутри другой (обе на АСМ).
|
|
04.11.2015, 19:01
|
Профессор
|
|
Регистрация: 29.10.2015
Сообщений: 473
|
|
|
|
29.11.2015, 09:33
|
Аспирант
|
|
Регистрация: 29.11.2015
Сообщений: 51
|
|
Я вот тоже попробовал вчера asm.js , пока что только настроил работу с ним через Emscripten в Visual Studio, могу теперь писать на с/c++ и сразу запускать html/js в браузере. Скорость выполнения такого JS приближается к нативной, и при этом работает в любом браузере! Согласен полностью, что код большой получается в .js, как то надо научиться компилировать без лишнего. Но вообще, я думаю намудрили они там... когда настраивал и разбирался с мануалом, напомнило мне это всё, как я разбирался с Marmalade, который позволял програмить один раз на одном языка, а потом портировать на все платформы, правда для этого надо изучить кучу нюансов работы с ним, переписанных ими функций, и тд, а инфы в инете очень мало, даже на английском! Портировать с++ в asm.js, настраивать Emscripten, изучать новый мануал и тп есть смысл только, если у вас много постоянно выполняемого JS кода. Если JS кода мало, то его и вручную можно написать в стиле asm.js, если выполнение JS кода это менее 10% от всей нагрузки, думаю смысла заморачиваться с ним нет. К примеру, если делать графику на WebGL/OpenGL ES, то там почти все сложные расчеты можно делать в шейдерах, что не имеют отношения к JS и быстрее выполняться не будут. А вот если у вас сложный ИИ написан на JS или какой-нить парсер, или идет интенсивная работа в DOM-ом, циклы всяких вычислений, и любые подобные вещи, которые жрут много процессорного времени при выполнении, то однозначно нужен asm.js или тп прокладки. У меня простые расчеты в цикле на asm.js выполняются в 1000 раз быстрее, чем на обычном js (с нетипизированными переменными).
Последний раз редактировалось webgame, 30.11.2015 в 00:07.
|
|
30.11.2015, 15:05
|
Профессор
|
|
Регистрация: 29.10.2015
Сообщений: 473
|
|
Сообщение от webgame
|
Если JS кода мало, то его и вручную можно написать в стиле asm.js
|
Нет не можно его вручную написать, ты мозг сломаешь когда банальное обращение к куче будешь описывать чтобы гребаный цикл for сделать
Сообщение от webgame
|
то там почти все сложные расчеты можно делать в шейдерах,
|
ага, особенно физику
|
|
30.11.2015, 15:09
|
Профессор
|
|
Регистрация: 29.10.2015
Сообщений: 473
|
|
Сообщение от FINoM
|
как использовать АСМ без компилятора
|
никак) на ассемблере проще писать код или банирниками чем на асм руками)
> в каких задачах его можно применить
обычно оптимизируют только горячие куски кода, но вслучае асм нужно весь поджект псиать на асм, по этому только горячие проэкты пишутся на нем, например физические движки или что то, что служдит платформой для чего либо другого, и должно работать максимально быстро, напимер фреймворки какие-то и.т.п., а вот игрули же, использующие эти фреймворки, должны писаться на яваскрипте, что и идеологически верно, и не затормозит игрулину так как api фреймворка будет все выкрутасы делать а ты яваскриптом только рулить им будешь.
|
|
01.12.2015, 11:42
|
Аспирант
|
|
Регистрация: 29.11.2015
Сообщений: 51
|
|
Сообщение от Mаxmaxmаximus
|
ага, особенно физику
|
Я писал 3d движки на ассемблере с SSE еще 18 лет назад в школе , а щас могу писать на cuda даже расчеты по теории относительности Эйнштейна. А уж убогую игровую физику на GPU конвеер распаралелить как два пальца, даже на webgl
Вообще если человек пишет сложные физические расчеты, не используя мощь GPU , то это просто означает, что он не знает как это правильно делать мне кажется полным идиотизмом вычислять физику, трансформацию вершин, генерацию текстур, создание карт нормалей динамически создаваемых примитивов и тп в оперативке, используя CPU, а затем гонять эти данные по шине в GPU ...
Последний раз редактировалось webgame, 01.12.2015 в 12:01.
|
|
01.12.2015, 13:37
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от webgame
|
Можно писать и без компилятора
|
Меня волнует только одно: strict mode генерирует ошибку, когда используешь какие-нибудь опасные штуки (with, дублирование свойства при определении объекта и пр.). Как сделать так, тоб АСМ тоже генерировал ошибку, если тип не определен?
Ага, нашел ответ в посте на Хабре.
Последний раз редактировалось FINoM, 01.12.2015 в 13:50.
|
|
01.12.2015, 13:54
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
function x() {"use asm"; y = 0;}
x()
Почему не генерируется исключение?
|
|
01.12.2015, 20:10
|
Аспирант
|
|
Регистрация: 29.11.2015
Сообщений: 51
|
|
Сообщение от FINoM
|
Почему не генерируется исключение?
|
Честно, не разбирался что там и как, единственное что взял с asmjs.org/spec/latest/ функцию GeometricMean , вставил ее, как есть, в html и запустил в firefox, браузер написал - "Successfully compiled asm.js code". чтобы понимать почему, что там и как - надо изучать вопрос, инфа и примеры в гугле найти не проблема.
|
|
|
|