ASM.JS. Источники знаний.
Всем привет, такая проблема, нужно познакомиться asm.js, но информации на русском очень мало, а мой английский не позволяет мне нормально читать нерусскую документацию. Может кто-нибудь кинуть где я могу освоить основы, т.е. создание перменных, типы перменных, условия, циклы, функции.
|
ASM.JS Источники данных.
Начал пытаться читать англ документацию, но даже там ужасно мало примеров, кода, в общем теперь буду рад и английской документации, лишь бы доходчиво.
|
|
На чистом asm.js писан анриал, ибо синтаксис невероятно убог (пока), но для трансляций из всяуих LLVM норм.
Но есть такая штука lljs, которая позволяет юзать норм синтаксис, а затем всё транслируется в asm.js |
kobezzza,
Цитата:
|
Цитата:
|
kobezzza,
да, но это уже не asm.js, это уже ES7, например. |
Цитата:
'use asm' :) |
Asm.js Работа с DOM
Ребят спасибо за ответы, не подскажете как мне с DOM работать с помощью асми?
|
ASM.JS Компиляция.
И еще такой вопрос, как мне начать писать на asm.js, я читал, что нужно ставить emscripten, но что далее? Буду рад хотя бы кратенькому алгоритму, ну или еще лучше статье.
|
Цитата:
А так: (function () { 'use asm'; // Тут пишем наш азм })(); |
Да, интересно услышать про манипуляции с DOM (всё-таки DOM - это фундамент классического веб-приложения то бишь сайта ). Есть ли ускорение по сравнению с JS?
|
Цитата:
DOM API - это браузерное АПИ, не имеющее абсолютно никакого отношения к JS, потому использование ASM.js никак не сможет повлиять на это. ASM.js - это отсутствие сборщика мусора (т.е. ручное управление памятью), явная строгая типизация и AOT вместо JIT. В общем основная задача ASM.js - это портирование низкоуровневых программ, например, на C/C++ в JS. |
Я поэтому и спрашиваю, что у меня есть недопонимание.
То есть не имеет смысла использовать asm.js для ускорения производительности в пользовательских веб-интерфейсах? |
Цитата:
Имеет смысл при сложных вычислениях, например, в играх, работе со звуком и графикой и т.д. Например, игровой движок Unreal Engine 4 умеет компилиться в ASM.js, а там производительность критична. |
А если говорить о desktop-подобных веб-приложениях и той же 2d-графики в <canvas>, реализованных на JS? Лично я заметил, что-подобные вещи очень сильно нагружают среднестатистический компьютер.
|
Цитата:
Цитата:
У Canvas есть 2 контекста: 1) 2d - простой АПИ, изначально работало на CPU, но сейчас браузеры могут использовать и GPU для ускорения; 2) webGL - порт OpenGL ES, позволяет писать программы напряму на GPU (c помощью GLSL шейдеров - это С, а не JS) и может работать очень быстро. Но опять таки, к JS это отношения не имеет. Вот если мы решим написать физический движок, то там будет много сложных вычислений и ASM.js даст сильный профит. Пример 2D игры на Unreal Engine, скомпиленный в JS: https://www.unrealengine.com/html5 http://beta.unity3d.com/jonas/DT2/ - демка unity 5 скомпиленного в JS Цитата:
|
Например, при активном использовании разных виджетов мой процессор (Intel® Core™ i5-4570 CPU @ 3.20GHz × 4, Ubuntu 14.04 32-bit) грузится больше чем на 60%. Это, если честно, неприлично много. Вот вам и "летает", но за какую цену.
Ну не подходит JS (ES5) для таких серьёзных вещей, а терять связь на уровне удобных манипуляций с HTML/CSS не хочется. Кстати, в случае использования ES6 производительность повысится или всё таки лучше смотреть в сторону Dart/TypeScript или Cheerp? Я правильно понимаю смысл EcmaScript? По сути, это просто стандарт языка, а его производительность будет зависеть от реализации интерпретатора в веб-движке? То есть с новым стандартом выйдет обновленный, более быстрый движок? |
Я же вам уже 3-й раз обьясняю - DOM не имеет отношения к JS, поэтому смена языка никак не скажется на производительности. Вы для начала поймите что у вас тормозит, а потом уже рвитесь оптимизировать :)
Цитата:
Цитата:
TS, Dart и т.д. - это языки которые транслируются в JS (у Darta есть своя VM, но она нигде не юзается сейчас), т.е. на выходе тот же JS. Ещё раз, всё зависит от рук, т.к. сейчас JS один из самых быстрых скриптовых языков в мире (кстатим есть хорошее правило написания быстрого JS: пишите код так, как писали бы его на C), но никто не отменял гавнокод :) Цитата:
Цитата:
|
А вообще чего я вас отговариваю: пишите на ASM.js, только учтите, что там 90% ASM и только 10% JS :D
|
Цитата:
в ff первая заработала, вторая только полосу загрузки до конца догнала |
Цитата:
|
kobezzza,
Цитата:
Voronar, Цитата:
Цитата:
А не всё ли равно? Это всё в любом случае компилится в JS. Я, конечно, понимаю, что та же строгая типизация может упростить жизнь, но головой тоже нужно думать, а не менять постоянно типы переменных, радуя тем самым и VM и пользователей. Но это только один из примеров. |
kobezzza,
Цитата:
|
Цитата:
|
может из-за этого
http://beta.html5test.com/ Цитата:
|
Цитата:
|
Voronar,
Цитата:
Цитата:
Вот напишу я на том же TS какую-нибудь числодробилку, скомпилю, и она будет быстрее работать, чем если бы я её изначально написал на JS? |
kobezzza:
Цитата:
|
Цитата:
|
Как можно писать на JS в строгом статичном стиле, если это динамически типизированный язык или вы имеете ввиду "JS++"(ES6, ASM.js, etc)?
|
Цитата:
|
Voronar,
это значит, что если у тебя была переменная числового типа, то не надо ей присваивать строку/объект. |
После моего опыта программирования на С/С++ такие вещи - это естественно. А вот кто начинает с JS, то им это определлённо нужно узнать и как можно скорее.
|
Voronar,
тогда не стоит особо беспокоиться. |
Всем спасибо за интересные комментарии. По-моему, я довольно таки далеко отошёл от сабжа со своими вопросами.
|
Часовой пояс GMT +3, время: 19:27. |