Size: a a a

WebAssembly — русскоговорящее сообщество

2020 March 16

N

Nikolay in WebAssembly — русскоговорящее сообщество
Dmitry Bubnenkov
Поясни более развернуто плиз
В js динамическая типизация, это удобно, но очень медленно
источник

N

Nikolay in WebAssembly — русскоговорящее сообщество
При обращении к переменной в js, она оборачивается в оберточный тип и превращается о объект, с достаточно обширным апи
источник

N

Nikolay in WebAssembly — русскоговорящее сообщество
И js не знает, что там за данные, он просто пытается взаимодействовать с ними, исходя из контекста
источник

N

Nikolay in WebAssembly — русскоговорящее сообщество
let a = {}
При попытке вывести в консоль, будет что-то вроде:
console.log(String(a).toString())
источник

N

Nikolay in WebAssembly — русскоговорящее сообщество
Это если очень грубо
источник

N

Nikolay in WebAssembly — русскоговорящее сообщество
Number(a), Boolean(a), зависит от контекста
источник

N

Nikolay in WebAssembly — русскоговорящее сообщество
И при каждой операции объект обертка создается, а по завершении операции уничтожается
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
Nikolay
И при каждой операции объект обертка создается, а по завершении операции уничтожается
Э-ээ... не думаю, что так происходит на самом деле. Какой смысл пустой объект ещё оборачивать в объект-строку? Просто методы напрямую дёргаются. Плюс prototype chain. Если метод не нашли - не повезло, исключение. 😊
источник

N

Nikolay in WebAssembly — русскоговорящее сообщество
Alexander Tchitchigin
Э-ээ... не думаю, что так происходит на самом деле. Какой смысл пустой объект ещё оборачивать в объект-строку? Просто методы напрямую дёргаются. Плюс prototype chain. Если метод не нашли - не повезло, исключение. 😊
Это для примера
источник

N

Nikolay in WebAssembly — русскоговорящее сообщество
Alexander Tchitchigin
Э-ээ... не думаю, что так происходит на самом деле. Какой смысл пустой объект ещё оборачивать в объект-строку? Просто методы напрямую дёргаются. Плюс prototype chain. Если метод не нашли - не повезло, исключение. 😊
Именно так и работает
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
Nikolay
Именно так и работает
Где это так работает? В каком интерпретаторе?
источник

N

Nikolay in WebAssembly — русскоговорящее сообщество
С объектом плохой пример
источник

N

Nikolay in WebAssembly — русскоговорящее сообщество
Это референсный тип вообще
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
Да в JS все типы - референсные, и все они объекты. 🤷‍♀️
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
Собственно, разительная разница между JS и WASM - в JS вообще нет value-типов, "тупо чисел" в частности, а в WASM нет никаких других типов, кроме "тупо чисел".
источник

AT

Alexander Tchitchigin in WebAssembly — русскоговорящее сообщество
Ждём Interface Types и вот это всё. 😊
источник

でゲソ in WebAssembly — русскоговорящее сообщество
Alexander Tchitchigin
Э-ээ... не думаю, что так происходит на самом деле. Какой смысл пустой объект ещё оборачивать в объект-строку? Просто методы напрямую дёргаются. Плюс prototype chain. Если метод не нашли - не повезло, исключение. 😊
*оборачивает исключения в обертки*
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Сейчас смотрю как решается проблема с производительностью в v8 о которой я отрапортавал 5 месяцев назад. Ей был присвоен самый высоуий приоритет кстати
https://bugs.chromium.org/p/v8/issues/detail?id=10020#c3

Вот только сейчас за нее взялись. Так что проблема JS еще и не в том, что там все объекты и JIT оптимизирует-деоптимизирует, а еще и в том, что если будет бага или серьездная деградация производительности, то это будет решаться от месяца до нескольких лет, вне зависимости от приоритетности

С WebAssembly несколько проще - там весьма трудно допустить серьездную оплошность
источник

N

Nikolay in WebAssembly — русскоговорящее сообщество
MaxGraey
Сейчас смотрю как решается проблема с производительностью в v8 о которой я отрапортавал 5 месяцев назад. Ей был присвоен самый высоуий приоритет кстати
https://bugs.chromium.org/p/v8/issues/detail?id=10020#c3

Вот только сейчас за нее взялись. Так что проблема JS еще и не в том, что там все объекты и JIT оптимизирует-деоптимизирует, а еще и в том, что если будет бага или серьездная деградация производительности, то это будет решаться от месяца до нескольких лет, вне зависимости от приоритетности

С WebAssembly несколько проще - там весьма трудно допустить серьездную оплошность
ничего себе
источник

DM

Dmitry M in WebAssembly — русскоговорящее сообщество
> С WebAssembly несколько проще - там весьма трудно допустить серьездную оплошность

В iOS его таки ломали пару раз
источник