169 похожих чатов

Я, кстати, не понял, что именно считается "спекулятивной оптимизацией"? Inline

caches считаются? Девиртуализация + inline?

20 ответов

49 просмотров

ну видимо везде где может случится bailout откат

Alexander-Chichigin Автор вопроса
cevek
ну видимо везде где может случится bailout откат

В JS это везде. 🤣 При этом inline caches как раз не требуют прям отбрасывать скомпилированную функцию целиком. В то время как девиртуализация позволяет инлайн (не только в JS, но и в Java/C# и даже C++), а инлайн обеспечивает больше 50% ускорения среди вообще всех оптимизаций. Вот и как жить без этого? 😃

Alexander Chichigin
В JS это везде. 🤣 При этом inline caches как раз н...

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

Alexander-Chichigin Автор вопроса
cevek
ну вообще инлайн кеш это просто информация для спе...

Inline caches не имеют никакого отношения к code inlining optimisation. 😊

они хранят типы переменных и свойств которые приходят в рантайме и по ним уже можно думать как инлайнить

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

Alexander-Chichigin Автор вопроса
cevek
они хранят типы переменных и свойств которые прихо...

Это где так? Обычно inline cache — это просто такая vtable, и хранит указатели на функции...

Alexander-Chichigin Автор вопроса
でゲソ
ну там же вон статья выше про это есть. предполага...

С этим всё понятно. Непонятно, что происходит, если предположение оказалось не верным. 😊

Alexander-Chichigin Автор вопроса
cevek
ну я знаю только v8.

Вы, может быть, hidden classes имели в виду?

Alexander Chichigin
Вы, может быть, hidden classes имели в виду?

ну вот собственно для каждой переменной собирается о том сколько видов этих скрытых классов случилось. если превысит 4 то индайнить ниче не будет

Alexander-Chichigin Автор вопроса
でゲソ
срабатывает деоптимизация, закономерно

Т.е. это была спекулятивная оптимизация. А мы опсуждаем тезис, что спекулятивные оптимизации не нужны. Вот у меня в голове это и не сращивается. 😊

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

Alexander-Chichigin Автор вопроса
でゲソ
а чем аргументы выше не подходят. котороые про то ...

> спекуляции не приносят профита, а только накладные расходы Какие именно из спекуляций? Как я уже писал, inlining приносит более 50% ускорения во всех компиляторах любых языков начиная с C и далее по списку. В ОО языках с виртуальными вызовами для эффективного инлайна нужна ещё девиртуализация — это делается начиная с C++, не говоря уже про JVM/CLR и JS — там в полный рост. Везде кроме C++ это спекулятивная оптимизация, и я не вижу за счёт чего и на каких задачах JS может работать быстрее без неё.

Alexander Chichigin
> спекуляции не приносят профита, а только накладн...

да проблема скорее всего в этих инлайнингах, которые деоптимизируются на каждый чих ну т е элементарно стоит передать вместо {a: 1, b: 2} -> {b: 2, a: 1} произойдется деоптимизиция потому что скрытый класс уже будет другой

Alexander Chichigin
> спекуляции не приносят профита, а только накладн...

пажжи, почему только в плюсах это спекулятивная оптимизация? всё что компиляется, особенно через шланг будет не спекулятивным, не?

cevek
да проблема скорее всего в этих инлайнингах, котор...

ну или там опциональные поля в объектах, там уже это вообще никогда не заоптимизировать

Alexander-Chichigin Автор вопроса
でゲソ
пажжи, почему только в плюсах это спекулятивная оп...

Только в плюсах это НЕ спекулятивная, а консервативная, очевидно, оттого, что AOT, а не JIT.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта