Size: a a a

Compiler Development

2020 April 28

MO

Mar Ort in Compiler Development
Про бинарную трансляцию ничего не скажу, хотя мне кажется, что это какое-то насилие. А вот про джиты, как мне кажется, вы придаете сильно большое значение ресурсам, которые на компиляцию тратятся.
источник

TS

Timur Safin in Compiler Development
но они таки тратятся? и по многу раз
источник

MO

Mar Ort in Compiler Development
Хороший джит компилирует и оптимизурет только горячий путь. Таким образом ресурсов тратиться ровно столько, сколько требуется. А если вдруг профиль меняется, то старая оптимизация более неактуальна, и все нужно пересчитывать заново по новому профилю, в результате чего код может очень сильно поменяться.
источник

TS

Timur Safin in Compiler Development
а зачем на это тратиться - если это инвариант еще с момента установки?
источник

MO

Mar Ort in Compiler Development
Но это теоретизация конечно 🙂
источник

TS

Timur Safin in Compiler Development
Mar Ort
Хороший джит компилирует и оптимизурет только горячий путь. Таким образом ресурсов тратиться ровно столько, сколько требуется. А если вдруг профиль меняется, то старая оптимизация более неактуальна, и все нужно пересчитывать заново по новому профилю, в результате чего код может очень сильно поменяться.
LTO + PGO
источник

MO

Mar Ort in Compiler Development
Timur Safin
но они таки тратятся? и по многу раз
суперскаляр тратит эти ресурсы постоянно и без остановки
источник

TS

Timur Safin in Compiler Development
ну как сказать, предикторы там бывает тратят всего пару бит на предсказание перехода :)
источник

MO

Mar Ort in Compiler Development
Timur Safin
ну как сказать, предикторы там бывает тратят всего пару бит на предсказание перехода :)
Я скорее про компилятор в микрокод
источник

MO

Mar Ort in Compiler Development
Timur Safin
а зачем на это тратиться - если это инвариант еще с момента установки?
Какой инвариант?
источник

TS

Timur Safin in Compiler Development
код, и целевой процессор, не меняются для заданного продукта.  Нет смысла его каждый раз перекомпилировать, обнаруживая, что это Скайлейк. То что будет Скайлейк было известно еще в момент установки (тогда и надо AOTить), или, в рамках гомогенной инфраструктуры большого ДЦ одной компании, еще в момент билда
источник

MO

Mar Ort in Compiler Development
>Почему, например, Google Play, зная целевой процессор моего телефона, сразу не компилирует и не оптимизирует все скачиваемые программы и не отдает их нативно?

Забавно, что они в один момент такую фичу сделали. Но потом пользователи начали жаловаться, что, видите ли, уставнока и обновление приложения занимает "слишком много" времени и отключили
источник

MO

Mar Ort in Compiler Development
Timur Safin
код, и целевой процессор, не меняются для заданного продукта.  Нет смысла его каждый раз перекомпилировать, обнаруживая, что это Скайлейк. То что будет Скайлейк было известно еще в момент установки (тогда и надо AOTить), или, в рамках гомогенной инфраструктуры большого ДЦ одной компании, еще в момент билда
Да, но исполняется то он по разному, разные реальные CFG, тем самым разные ограничения на данные
источник

TS

Timur Safin in Compiler Development
Mar Ort
>Почему, например, Google Play, зная целевой процессор моего телефона, сразу не компилирует и не оптимизирует все скачиваемые программы и не отдает их нативно?

Забавно, что они в один момент такую фичу сделали. Но потом пользователи начали жаловаться, что, видите ли, уставнока и обновление приложения занимает "слишком много" времени и отключили
я имел в виду, что компилировать и кешировать все варианты надо в облаке, в Гугле. Еще до отдачи бинарников по сети
источник

MO

Mar Ort in Compiler Development
Timur Safin
я имел в виду, что компилировать и кешировать все варианты надо в облаке, в Гугле. Еще до отдачи бинарников по сети
Не уверен, но подозреваю, что они тогда умрут от нагрузки на свои стораджи, ведь армов сегодня милионы всяких разных
источник

TS

Timur Safin in Compiler Development
Mar Ort
Не уверен, но подозреваю, что они тогда умрут от нагрузки на свои стораджи, ведь армов сегодня милионы всяких разных
не умрут. Вариантов процессоров - исчислимое количество. Сторедж в гугле (яндексе, майкрософт, любом облаке) номинально бесконечен
источник

MO

Mar Ort in Compiler Development
Timur Safin
не умрут. Вариантов процессоров - исчислимое количество. Сторедж в гугле (яндексе, майкрософт, любом облаке) номинально бесконечен
Это так, но они же там все любят деньги считать. И если есть возможность сократить расходы на сторадж, этим 100% воспользуются.
источник

BD

Berkus Decker in Compiler Development
TGG
Что можете посоветовать по Колтину.
Для начала могу посоветовать писать его название правильно, тогда и в гугле может что то начнет находиться.
источник

SS

Sergey Sverdlov in Compiler Development
https://www.youtube.com/watch?v=OUHqiQIc2Ho&feature=youtu.be

Лекция "Языки программирования и методы трансляции"

Визуализация машинного кода: просто и наглядно. Условное выражение в Питоне: мне нравится. Генерируем машинный код для выражений: множители, слагаемые, простые выражения и просто выражения. Генерация кода для стандартных функций: ABS, MAX, MIN - нетривиально, ODD - совсем нетривиально. Генерация кода для операторов: присваивание, вызов стандартной процедуры. Первая работающая программа, созданная программирующей программой, то есть компилятором!
источник

SS

Sergey Sverdlov in Compiler Development
Компилятор языка "О" по состоянию на 28.04.2020
источник