• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przeplatanie TypeScript i asm.js, a strata wydajności.

Cloud VPS
0 głosów
377 wizyt
pytanie zadane 7 listopada 2015 w JavaScript przez jegor377 Stary wyjadacz (13,230 p.)
Siema,

Czy jeżeli będę przeplatał typescript i asm.js, to stracę dużo na wydajności? Czy niektóre opcje asm.js zanikną? Oraz czy da się pisać kod asm.js w innym języku niż C++? Znam C++, ale o wiele bardziej podoba mi się np. C# (który nie mógłby mi posłużyć ze względu na Garbage Collector)? Są jeszcze jakieś alternatywne języki po za rodziną C?

2 odpowiedzi

+1 głos
odpowiedź 7 listopada 2015 przez Comandeer Guru (607,100 p.)
wybrane 7 listopada 2015 przez jegor377
 
Najlepsza
Da się "pisać" we wszystkim, co emscripten przekompiluje do asm.js. Nie ma sensu pisać asma - on jest po prostu targetem dla narzędzi tego pokroju.

asm.js jest tak wąskim subsetem JS, że nie ma sensu pchać w to TS. Trzon aplikacji zostawiłbym po prostu jako efekt kompilacji, a resztę - jako TS albo kod JS.

I zanim ktoś się czepi: tak, wiem, że to nie jest prawdziwa kompilacja.
komentarz 7 listopada 2015 przez jegor377 Stary wyjadacz (13,230 p.)
no spk, dzięki. Jedno pytanko tylko mam:

Pobrałem emscripten i napisałem sobie byle co (coś najprostrzego), przekompilowałem i dostałem 68k linii kodu. Nasuwa się tylko jedno pytanie - gdzie tu optymalizacja? Może robię coś źle? Kompiluje to linijką emcc -s ASM_JS=1 plik i w sumie nwm co robi to -s, ale bez tego nie działa, bo emcc nie wie wtedy co to ASM_JS=1 oraz bierze to za plik.
komentarz 7 listopada 2015 przez Comandeer Guru (607,100 p.)
Problem polega na tym, że do prostych programów coś takiego nie ma sensu, bo równie dobrze można je napisać w czystym JS. Optymalizacja jest znaczna, gdy program musi wykonać jakieś obliczenia i jest bardziej skomplikowany. Musiałbyś coś większego mieć, co można by przepuścić przez emscripten.
komentarz 7 listopada 2015 przez jegor377 Stary wyjadacz (13,230 p.)
aaa, już ogarniam, dzięki! :) W sumie to chciałem sobie napisać mini kompilator asm'a na androida w składni intela (dyrektywy oczywiście bym sobie jakieś wymyślił) i sobie pomyślałem, że napiszę to pod phonegap (to śmiga na apache cordova podobno i to pozwala na tworzenie apek na androida), bo jak pobrałem xamarin dla C# to się okazało, że muszę ogarnąć sobie android studio, żeby robić wygląd apki i do tego mam 30 dni triala + pobierałem to 2h, a instalowałem z 5h (vs15), tak więc to mi się nie opłaca, a trochę boję się, że zwykły js nie będzie tak szybki jak c#, więc zainteresowałem się asm.js i chciałem to trochę połączyć z typescriptem, bo gdzieś czytałem, że oferuje fajną obiektowość i bardziej ogarniętą składnię tejże obiektowości, interfejsów itp... Generalnie to chcę się go nauczyć. :)
+1 głos
odpowiedź 7 listopada 2015 przez event15 Szeryf (93,790 p.)
Nigdy nie słyszałem o asm.js ale pytasz o inne języki:
http://kripken.github.io/mloc_emscripten_talk/#/36

Możliwe, ze to pomoże, jeżeli chodzi o wydajność to się nie wypowiem. Pytanie tylko czy to duża aplkiacja - bo jeżeli robisz aplikację gdzie różnica wydajności jest tylko dla jednego użykownika i rzędu pół sekundy to nie wiem czy warto się rozwodzić na ten temat.
komentarz 7 listopada 2015 przez jegor377 Stary wyjadacz (13,230 p.)
narazie pobrałem niby ten cały kompilator. Kompilowałem 2394032980932894038290480932840909328094820 godzin prostego hello worlda, patrzę w kod, a tam 68 854 linie kodu, które w ogóle nie kojażą się z tym co było na stronie, więc nwm czy coś robię źle, czy to tak ma być? xdd
komentarz 7 listopada 2015 przez Comandeer Guru (607,100 p.)
asm.js to super wydajny subset JS stworzony przez Mozillę jako target dla cross-compilerów typu EmScripten (de facto powstał z patternów używanych przez EmScriptena). http://asmjs.org/

Obecnie dąży się do wytworzenia bytecode'u, który pozwoli odpalić dowolny język w środowisku semantycznym JS: http://www.2ality.com/2015/06/web-assembly.html → prace takie oczywiście sprawią, że asm.js nie będzie więcej potrzebny.

Podobne pytania

0 głosów
3 odpowiedzi 989 wizyt
pytanie zadane 5 sierpnia 2020 w JavaScript przez Nickowy3456 Użytkownik (610 p.)
–1 głos
0 odpowiedzi 271 wizyt
pytanie zadane 27 maja 2016 w JavaScript przez jegor377 Stary wyjadacz (13,230 p.)
0 głosów
1 odpowiedź 396 wizyt

93,487 zapytań

142,423 odpowiedzi

322,773 komentarzy

62,909 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...