LINUX.ORG.RU

javascript захватит мир

 , , ,


0

1

https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript

Ъ: если перевести ядро и весь софт на js, то помимо очевидных преимуществ (таких как апсолютная портабельность) будет получен итоговый прирост в производительности 4% за счет отказа от аппаратного контроля на уровне CPU

WTF?

★★★★★

за счет отказа от аппаратного контроля на уровне CPU

сам придумал?

anonymous
()

Ъ: если перевести ядро и весь софт на js, то помимо очевидных преимуществ (таких как апсолютная портабельность) будет получен итоговый прирост в производительности 4% за счет отказа от аппаратного контроля на уровне CPU

то есть мужик из видео [которое я (Ъ) — не смотрел] хочет нам сказать что накладные расходы по контролю за выполняемыми процессами якобы настолько велик, что это якобы даже больше чем накладные расходы от Javascript? :-)

user_id_68054 ★★★★★
()

А на деле будет даже тормознее JVM.

EXL ★★★★★
()
Ответ на: комментарий от user_id_68054

мужик на видео очевидным образом ловит лулзы, как и аудитория. но я понять не могу, где подвох

MyTrooName ★★★★★
() автор топика

Смотря какая реализация и опять-же как там с реализацией актор-модели, пространств имен, матчингом, scope.

Чем это круче ржавчины? Нет, безусловно js не так уж и плох...

anonymous
()

Хорошо бы. JS — язык не идеальный, но хороший. Запаришься писать на сишке или плюсах то, что на JS в одну строчку делается. И это была бы настоящая портабельность, а не ее видимость. Тупо, написал код — и он везде просто работает, везде, мать его, в любой оси, в любом браузере, на любом мобильнике, планшете, ets. Слишком хорошо звучит, чтобы сбылось.

anonymous
()
Ответ на: комментарий от anonymous

Хорошо бы. JS — язык не идеальный, но хороший

Толсто. Он настолько не идеальный, насколько это возможно. Иногда даже непонятно что хуже: php или JS.

xpahos ★★★★★
()
Ответ на: комментарий от user_id_68054

накладные расходы по контролю за выполняемыми процессами якобы настолько велики

Redis утверждает, что есть к чему стремиться.

tlx ★★★★★
()
Ответ на: комментарий от anonymous

как там с реализацией актор-модели

вот тут

http://www.dalnefre.com/wp/2014/03/actors-in-javascript/

чувак показал пример реализации

кроме того, сейчас есть web-веркеры, которые поддерживают многопоточность, и, кстати, общаются посредством сообщений. Думаю, вопрос времени.

пространств имен, scope.

Все ништяк

матчингом

вроде нет. А он нужен?

anonymous
()
Ответ на: комментарий от xpahos

Что в нем плохого, помимо того, что его быдло не осиливает? Очень выразительный язык, к тому же достаточно быстрый, мощное smalltalk/self - like ООП, хорошо подходит для быстрого прототипирования. Для любителей лиспа тоже подходит, семантика схемы в языке реализована почти полностью. Кстати, для быдла сейчас в ES6/7 много плюшек, в том числе и классы, так что все в итоге будут довольны. Очень демократичный язык.

anonymous
()
Ответ на: комментарий от anonymous

вроде нет. А он нужен?

еще как!!!

- матчинг это альтернативный и весьма гибкий способ слегка смягчить строгую типизацию не теряя всех прелестей динамизма...

и атомов с гвуардами отсыпать чуток пригоршней...

Без матчинга не круто. Хотя встречаются реализации матчинга на js но это так: эксперименты.

anonymous
()

будет получен итоговый прирост в производительности 4% за счет отказа от аппаратного контроля на уровне CPU

потом выкинуть тормозной JS, перейти на «плоскую» память и получить специализированную ОСРВ. Ошибка любого приложения может привести к краху систему, зато в синтетических тестах быстрее где-то на треть.

MKuznetsov ★★★★★
()
Ответ на: комментарий от anonymous

fixed

Хорошо бы. JS — язык не идеальный, но хороший. Запаришься писать на сишке или плюсах то, что на JS в одну строчку делается. И это была бы настоящая портабельность, а не ее видимость. Тупо, написал код — и он везде просто тормозит, везде, мать его, в любой оси, в любом браузере, на любом мобильнике, планшете, ets. Слишком хорошо звучит, чтобы сбылось.

WRG ★★★★
()
Ответ на: fixed от WRG

Не так уж он и тормозит. Есть в инете куча бенчмарков, доходит до того, что сишка сливает. И над этим постоянно работают.

anonymous
()
Ответ на: комментарий от anonymous

Можно пример «сишка сливает», пж.

И да, ты не путай жс и асмжс, который конпелируется из сишного кода и является просто прослойкой-передатчиком представления ir валидным жабаскрипт кодом на клиенский llvm.

Он должен иметь скорость сишки собранной шлангом, если этого нет, то он говно.

И над этим постоянно работают.

Ещё раз, вася, я конечно понимаю, что пацанов в мире эльфов думать не учат, но появление asm.js доказало неспособность жс кода к производительности.

Т.е. asm.js констатировал факт - жс говно и единственное, что мы с ним может сделать - это зашифровать в нём как-то ir сишного кода. Ты этого реально не понимаешь?

И жс там только потому, что его вендорлок. Если бы не вендорлок, то его бы выпили нахрен оттуда и вставили ir.

TrueTsar1C
()
Ответ на: комментарий от anonymous

Запаришься писать на сишке или плюсах то, что на JS в одну строчку делается.

Можно примеры одной строки?

TrueTsar1C
()

объясните кто нибудь из адептов js вот этот

$ node
> xs = ['10','10','10']
[ '10', '10', '10' ]
> xs.map(parseInt)
[ 10, NaN, 2 ]

TDrive ★★★★★
()
Последнее исправление: TDrive (всего исправлений: 1)
Ответ на: комментарий от TDrive
> xs = ['100', '100', '100', '100', '100', '100', '100']
[ '100',  '100',  '100',  '100',  '100',  '100',  '100' ]
> xs.map(parseInt)
[ 100,  NaN,  4,  9,  16,  25,  36 ]

Почему js так неадекватно себя ведет на такой простой задаче?)))

TDrive ★★★★★
()
Ответ на: комментарий от mix_mix

Кудаж ты самоудалился.

В v8 нет поддержки асмжс, а производительность та же.

Производительность в8 в говне.

Около 70% от скорости сишного кода.

Пример можно, либо просто бла-бла? У сишного кода уже появилась скорость - это так мило.

Для динамического языка с JIT это офигеть какое достижение.

В чем конкретно достижение?

Ты давай, не удаляйся, а за слова-то отвечай.

TrueTsar1C
()
Ответ на: комментарий от TrueTsar1C

с parseFloat все впорядке, на что намекает NaN ?

TDrive ★★★★★
()
Ответ на: комментарий от anonymous

Есть в инете куча бенчмарков, доходит до того, что сишка сливает

Я такое про жабу лет 10 назад слышал, а между тем жаба до сих пор тормозит и жрёт память.

Кстати, раз уж дошло до сравнение с жабой: что-нибудь запрограмированное на js уже убилось о стену?

hateyoufeel ★★★★★
()
Ответ на: комментарий от TDrive

Потому что parseInt в жс принимает два аргумента. А так как жс не может в проверку типов, вместо ошибки ты получаешь полное говно.

hateyoufeel ★★★★★
()
Ответ на: комментарий от TDrive

Почему js так неадекватно себя ведет на такой простой задаче?)))

очевидно потому что map передаёт и второй аргумент тоже :-)

если бы не было бы второго вргумента то:

> xs.map(function (x) { return parseInt(x)}) // Array [ 100, 100, 100, 100, 100, 100, 100 ]

user_id_68054 ★★★★★
()
Ответ на: комментарий от TDrive

Вообще-то всё довольно банально - map в js оказывается сделан довольно «практичным» и его можно применять там, где в языках с «правильным» фп пришлось бы городить range(len()).

['a', 'b', 'c'].map(function(a, b) {console.log(a+b)})
anonymous
()
Ответ на: комментарий от TrueTsar1C

Кудаж ты самоудалился.

Да я наврал, в v8-таки есть уже поддержка.

Пример можно, либо просто бла-бла?

https://github.com/nodeca/pako

В чем конкретно достижение?

Лень искать про v8, почитай про luajit. Достижение в том, что раньше ни у кого так круто не получалось.

mix_mix ★★★★★
()
Ответ на: комментарий от anonymous

а он вторым аргументом передает индекс массива, теперь все встало на свои места)

TDrive ★★★★★
()
Ответ на: комментарий от mix_mix

Да я наврал, в v8-таки есть уже поддержка.

Отгадай, а почему? Почему же. Если итак с такой же скоростью исполняла? Наверное 100% не потому, что тормазит в говно.

А, а, скажи мне, вася, а зачем асмжс сделали? Наверное форфан, а не потому, что на жабаскрипте писать нереально. Это такие куллстори.

https://github.com/nodeca/pako

Я уже разоблачал этот мусор. В каком месте оно быстрее?

Sample: lorem_1mb.txt (1000205 bytes raw / ~257018 bytes compressed)
 > deflate-dankogai x 7.37 ops/sec ±0.26% (22 runs sampled)
 > deflate-gildas x 7.84 ops/sec ±1.29% (24 runs sampled)
 > deflate-imaya x 4.54 ops/sec ±8.66% (15 runs sampled)
 > deflate-pako x 18.31 ops/sec ±0.31% (49 runs sampled)
 > deflate-pako-string x 14.93 ops/sec ±1.07% (41 runs sampled)
 > deflate-pako-untyped x 9.01 ops/sec ±0.65% (26 runs sampled)
 > deflate-zlib x 24.44 ops/sec ±0.17% (61 runs sampled)
 > inflate-dankogai x 68.82 ops/sec ±0.09% (72 runs sampled)
 > inflate-imaya x 156 ops/sec ±0.81% (76 runs sampled)
 > inflate-pako x 130 ops/sec ±0.80% (82 runs sampled)
 > inflate-pako-string x 62.91 ops/sec ±0.66% (66 runs sampled)
 > inflate-pako-untyped x 80.88 ops/sec ±1.91% (66 runs sampled)
 > inflate-zlib x 216 ops/sec ±1.06% (84 runs sampled)

И то поцантре сам заявлял, что его хрень «быстрее» только на распаковке. Так уж и быть - я запилю инфлейт, чисто чтобы поржать.

Как пацаны там сишку расщепляют.

TrueTsar1C
()
Ответ на: комментарий от TrueTsar1C

Отгадай, а почему?

С ним-таки быстрее. Но его поддержку долго не хотели добавлять.

В каком месте оно быстрее?

Ну я ни разу не говорил, что js быстрее си. Ты на какой версии ноды пускал?

mix_mix ★★★★★
()
Ответ на: комментарий от TrueTsar1C

И да, ты не путай жс и асмжс, который конпелируется из сишного кода и является просто прослойкой

А че ты так разволновался? асм-js — это подмножество js, тот же самый js, иными совами. Какая разница, на чем он написан? Все двиги js написаны, емнип, на плюсах, возможно частично на си, это ничего не меняет, надо будет, перепишут на чем то другом. Сишка, и даже асм(тот который не жеэс) — все это прослойки, в конечном итоге.

anonymous
()
Ответ на: комментарий от TrueTsar1C

из сишного кода

И не из сишного, а в сишный, тогда уж. Ты че то совсем слабо представляешь реализации языков и конпеляторов, я гляжу.

anonymous
()
Ответ на: комментарий от Kuzy

Ну, это уже ты конкретно затупил. У тебя тут конкатенируются индексы массива с их значениями, бревном надо быть, чтобы не понимать такой элементарщины.

newjsser
()
Ответ на: комментарий от mix_mix

С ним-таки быстрее

С ним не соизмеримо быстрее. Жс становится просто не нужным, как и сам в8.

Но его поддержку долго не хотели добавлять.

Потому что пацаны понимают, в отличии от вас, что значит добавить асмжс. Это значит сказать - я сдаюсь и всё, что я сделал говно. И моя цель «быстрый жс» провалилась, так как я не представляю как мне догнать асмжс.

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

Ну я ни разу не говорил, что js быстрее си.

Тот, кому я отвечал говорил.

Жабаскрипт не имеет и 1% тех возможностей к оптимизации, что есть у пацанского си. Это просто мусор.

Ты на какой версии ноды пускал?

node --version
v0.12.0

Поставил самую последнюю в портеже

node --version
v0.12.2


Sample: lorem_1mb.txt (1000205 bytes raw / ~257018 bytes compressed)
 > deflate-dankogai x 6.96 ops/sec ±0.41% (21 runs sampled)
 > deflate-gildas x 7.50 ops/sec ±1.68% (22 runs sampled)
 > deflate-imaya x 4.48 ops/sec ±9.68% (15 runs sampled)
 > deflate-pako x 17.60 ops/sec ±0.45% (47 runs sampled)
 > deflate-pako-string x 14.20 ops/sec ±1.16% (39 runs sampled)
 > deflate-pako-untyped x 8.48 ops/sec ±0.38% (25 runs sampled)
 > deflate-zlib x 24.69 ops/sec ±0.18% (61 runs sampled)
 > inflate-dankogai x 68.41 ops/sec ±0.04% (72 runs sampled)
 > inflate-imaya x 145 ops/sec ±1.10% (78 runs sampled)
 > inflate-pako x 127 ops/sec ±0.50% (83 runs sampled)
 > inflate-pako-string x 63.24 ops/sec ±0.66% (67 runs sampled)
 > inflate-pako-untyped x 78.84 ops/sec ±2.22% (74 runs sampled)
 > inflate-zlib x 247 ops/sec ±1.07% (85 runs sampled)

Судя по по цифрам пацана 70.03, что в 3.5 раза медленнее моего результата, то пацан мерил на коре2 1.86 в лучшем случае, а скорее всего вообще на каком-то нищем лаптопном говне.

Эти бенчи такие круты, такие милые. И такие прям объективные.

TrueTsar1C
()
Ответ на: комментарий от Kuzy

ЧЕЕЕЕ. Объясните как так выходит?

тебе уже объяснили, parseInt принимает 2 аргумента, map тоже. специализируй по одному аргументу, и получишь то, что ожидаешь.


;['100', '100', '100', '100', '100', '100', '100'].map(parseInt)

// ::: [ 100, NaN, 4, 9, 16, 25, 36 ]

;['100', '100', '100', '100', '100', '100', '100'].map(function(x){return parseInt(x)})

// ::: [ 100, 100, 100, 100, 100, 100, 100 ]

newjsser
()
Ответ на: комментарий от anonymous

асм-js — это подмножество js, тот же самый js, иными совами.

Как сложно что-то объяснить некомпетентному вебадепту. Иди хоть почитай что такое асмжс.

Какая разница, на чем он написан?

Не он написан, а код. Дак ты вообще нулёвый, как я погляжу. Ну да, возможно я виноват и ты не осилил распарсить - там слово транслируется, а не конпилируется.

Все двиги js написаны, емнип, на плюсах, возможно частично на си, это ничего не меняет, надо будет, перепишут на чем то другом.

Не перепишут.

Сишка, и даже асм(тот который не жеэс) — все это прослойки, в конечном итоге.

Да ты, как я погляжу, ваще эксперт.

TrueTsar1C
()
Ответ на: комментарий от mix_mix

Пока я пилю инфлейт - лучше объясни крякле выше что такое асмжс, почему он не подмножество жс и почему он к жс не имеет никакого отношения и почему код на асмжс не имеет никакого отношения к жс.

А то у меня жопу разорвёт и меня о5 забанят, помоги, пж.

TrueTsar1C
()
Ответ на: комментарий от TrueTsar1C

А ты никогда не задумывался, что сишка тоже на чем-то написана, и во что-то транслируется? Или она основа основ, тыщитаешь? Почему она не прослойка то?

newjsser
()
Ответ на: комментарий от newjsser

А ты никогда не задумывался, что сишка тоже на чем-то написана

Причём тут сишка? Очередной веббой, который нихрена в этом мире не понимает.

Ещё раз вася, весь asmjs код оттранслирован из сишки, а весь код на сишке написан на ней изначально.

TrueTsar1C
()
Ответ на: комментарий от newjsser

Is asm.js a new language?

И что ты мне спастил? асмжс не новый язык, я разве говорил, что он новый?

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

Именно по этой причине

C programs compiled to asm.js are usually within a factor of 2 slowdown over native compilation with clang

Эти 2раза и берутся. Это кстати и ответ тебе на предыдущие сообщение про сишку.

Ты даже не удосужился прочитать пасту, о которой кукарекаешь.

TrueTsar1C
()

журналисты что-то-там учёные.

возможно (только возможно) «jit»-компиляция(и специализация по типам при том же jit) и прочие оптимизации притащенные из self и присных позволяют в итоге иметь +несколько процентов с росту производительности.

но это теми самыми по той самой писано.

qulinxao ★★☆
()
Ответ на: комментарий от newjsser

Лул, я вообще-то хотел весь идиотизм js-ного map-а показать.

Kuzy ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.