Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   ASM.JS невероятен (https://javascript.ru/forum/offtopic/59232-asm-js-neveroyaten.html)

FINoM 03.11.2015 19:09

Mаxmaxmаximus, лично мне было бы интересно узнать, как использовать АСМ без компилятора и в каких задачах его можно применить. В циклах, типизированных массивах, типизированных переменных - ок. Но хорошо бы узнать, помогает ли асм при работе с объектами (обычными инстансами Object) и как оптимизировать вызов одной функции внутри другой (обе на АСМ).

Mаxmaxmаximus 04.11.2015 19:01

лайк репост https://youtrack.jetbrains.com/issue/CPP-4974#

webgame 29.11.2015 09:33

Я вот тоже попробовал вчера 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 (с нетипизированными переменными).

Mаxmaxmаximus 30.11.2015 15:05

Цитата:

Сообщение от webgame
Если JS кода мало, то его и вручную можно написать в стиле asm.js

Нет не можно его вручную написать, ты мозг сломаешь когда банальное обращение к куче будешь описывать чтобы гребаный цикл for сделать

Цитата:

Сообщение от webgame
то там почти все сложные расчеты можно делать в шейдерах,

ага, особенно физику


Mаxmaxmаximus 30.11.2015 15:09

Цитата:

Сообщение от FINoM
как использовать АСМ без компилятора

никак) на ассемблере проще писать код или банирниками чем на асм руками)

> в каких задачах его можно применить
обычно оптимизируют только горячие куски кода, но вслучае асм нужно весь поджект псиать на асм, по этому только горячие проэкты пишутся на нем, например физические движки или что то, что служдит платформой для чего либо другого, и должно работать максимально быстро, напимер фреймворки какие-то и.т.п., а вот игрули же, использующие эти фреймворки, должны писаться на яваскрипте, что и идеологически верно, и не затормозит игрулину так как api фреймворка будет все выкрутасы делать а ты яваскриптом только рулить им будешь.

webgame 01.12.2015 11:42

Цитата:

Сообщение от Mаxmaxmаximus (Сообщение 398114)
ага, особенно физику

Я писал 3d движки на ассемблере с SSE еще 18 лет назад в школе , а щас могу писать на cuda даже расчеты по теории относительности Эйнштейна. А уж убогую игровую физику на GPU конвеер распаралелить как два пальца, даже на webgl :)

Вообще если человек пишет сложные физические расчеты, не используя мощь GPU , то это просто означает, что он не знает как это правильно делать:) мне кажется полным идиотизмом вычислять физику, трансформацию вершин, генерацию текстур, создание карт нормалей динамически создаваемых примитивов и тп в оперативке, используя CPU, а затем гонять эти данные по шине в GPU ...

webgame 01.12.2015 11:49

Цитата:

Сообщение от FINoM (Сообщение 394364)
лично мне было бы интересно узнать, как использовать АСМ без компилятора

Можно писать и без компилятора:
http://habrahabr.ru/post/193642/
http://asmjs.org/spec/latest/

FINoM 01.12.2015 13:37

Цитата:

Сообщение от webgame
Можно писать и без компилятора

Меня волнует только одно: strict mode генерирует ошибку, когда используешь какие-нибудь опасные штуки (with, дублирование свойства при определении объекта и пр.). Как сделать так, тоб АСМ тоже генерировал ошибку, если тип не определен?

Ага, нашел ответ в посте на Хабре.

FINoM 01.12.2015 13:54

function x() {"use asm"; y = 0;}
x()
Почему не генерируется исключение?

webgame 01.12.2015 20:10

Цитата:

Сообщение от FINoM (Сообщение 398223)
Почему не генерируется исключение?

Честно, не разбирался что там и как, единственное что взял с asmjs.org/spec/latest/ функцию GeometricMean , вставил ее, как есть, в html и запустил в firefox, браузер написал - "Successfully compiled asm.js code". чтобы понимать почему, что там и как - надо изучать вопрос, инфа и примеры в гугле найти не проблема.


Часовой пояс GMT +3, время: 18:28.