Size: a a a

Compiler Development

2020 May 02

PS

Peter Sovietov in Compiler Development
Alex
Нет, но просмотрел по диагонали. Статья интересная. Я бы сказал, что большинство оптимизаций требуют профильной информации. У нас компилятор так спроектировано что её не может не быть.

Кстати, любопытно, я так понял это они делал для борландовского компилятора, а алгоритм потом идёт в итоговую версию?
Это же Купер, он — академист, а потом уже его и его коллег работами пользуются разработчики компиляторов :) В данном случае они использовали gcc, но это был не принципиальный момент, судя по всему.
Вообще, Купер после известных разработок 90-х, в том числе после знаменитой работы по комбинированным анализам/оптимизациям с К. Кликом, серьезно занялся вопросами адаптивной компиляции.
Если интересно, могу найти его презентацию на эту тему.
источник

A

Alex in Compiler Development
Было бы очень интересно
источник

PS

Peter Sovietov in Compiler Development
Alex
Было бы очень интересно
источник

A

Alex in Compiler Development
Спасибо
источник

VM

Victor Miasnikov in Compiler Development
MaxGraey
> Я думаю, что допуск, минуя некотрые этапы, к пром. эксплуатации - это ответственность  для людей поставивших свою подпись под этим решением.

ЧАЭС кстати строил «Полесск-Строй» который до этого только коровники возводил) Последствия я даже на себе ощутил, когда мне было 3 года. А осудили всех трех человек, которые кстати к строительству не имели отношения)
А что, в Чернобыле бетон подвёл?
Это новое прочтение...

> 3 года

 РБ? Украина? Брянск?
Я радиактивные ( в конкретном лесу) лисички "на картошке" жарил под Молодечно.
Не в 1986 году. Позже.

Про мониторинг - не переживайте так. Это относительно безобидная сфера деятельности на АЭС.

Последние планы - шире.
источник

M

MaxGraey in Compiler Development
Victor Miasnikov
А что, в Чернобыле бетон подвёл?
Это новое прочтение...

> 3 года

 РБ? Украина? Брянск?
Я радиактивные ( в конкретном лесу) лисички "на картошке" жарил под Молодечно.
Не в 1986 году. Позже.

Про мониторинг - не переживайте так. Это относительно безобидная сфера деятельности на АЭС.

Последние планы - шире.
> А что в Чернобыле бетон подвёл?

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

KR

K R in Compiler Development
Peter Sovietov
Спасибо за статью! Особенно приятно, что один из ее авторов есть в нашем чате :)

Inline-подстановку легко осуществить, сложно понять — когда это сделать. Судя по всему, без обратной связи без профилировщика не обойтись. Как раз в духе моей реплики по поводу self-tuning.

Кстати, а вот с этой работой Вы знакомы? https://www.researchgate.net/publication/225220586_An_Adaptive_Strategy_for_Inline_Substitution
А есть варианты с перераспределением функций? Когда вы делаете "полную подстановку", а потом анализируя граф протока управления перенарезаете программу на функции?
источник

PS

Peter Sovietov in Compiler Development
K R
А есть варианты с перераспределением функций? Когда вы делаете "полную подстановку", а потом анализируя граф протока управления перенарезаете программу на функции?
Да, такое тоже существует.
источник

KR

K R in Compiler Development
Peter Sovietov
Да, такое тоже существует.
А есть ли смысл это делать в jit? То есть, манипуляции с inline? Правда, ничего, кроме вызовов тут не удалить... Перенарезка как раз должна работать с размерами кэшей.
источник

PS

Peter Sovietov in Compiler Development
K R
А есть ли смысл это делать в jit? То есть, манипуляции с inline? Правда, ничего, кроме вызовов тут не удалить... Перенарезка как раз должна работать с размерами кэшей.
Ну, достаточно давно были работы по JVM, где таким образом размер кода сокращали. Но это делалось не в режиме JIT :)
источник

KR

K R in Compiler Development
И ещё вопрос - с какого размера программы  начинаются проблемы с tlb? Ну характерный размер для современного серверного процессора. На работе есть программы по 0.5 гига TEXT

https://stackoverflow.com/questions/40649655/how-is-the-size-of-tlb-in-intels-sandy-bridge-cpu-determined

Видимо, критично что-то около 256кб, 4Мб и 16-32 Мб.
источник

AN

Alexander Nasonov in Compiler Development
В интеле можно 4 гигобайтные страницы в tlb держать. Если все в них вместить, то вообще о проблемах с tlb можно забыть (правда появится потенциальная проблема с page faults). Самое там сложное, это поменять рантайм ликновщик, чтобы он в гигабайтную страницы код/rodata загружал.
источник

AN

Alexander Nasonov in Compiler Development
А 2мег страниц можно вроде 32, если мне память не изменяет.
источник

KR

K R in Compiler Development
В любом случае, получается что-то около десятков мегабайт. Ясно.

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

AN

Alexander Nasonov in Compiler Development
Код часто раздувается кривыми руками программистов. Иногда кривыми мозгами дизайнеров языков.
источник

KR

K R in Compiler Development
Alexander Nasonov
Код часто раздувается кривыми руками программистов. Иногда кривыми мозгами дизайнеров языков.
Основная проблема в том, что за написание кода платят, а за удаление - нет.
источник

VM

Victor Miasnikov in Compiler Development
K R
И ещё вопрос - с какого размера программы  начинаются проблемы с tlb? Ну характерный размер для современного серверного процессора. На работе есть программы по 0.5 гига TEXT

https://stackoverflow.com/questions/40649655/how-is-the-size-of-tlb-in-intels-sandy-bridge-cpu-determined

Видимо, критично что-то около 256кб, 4Мб и 16-32 Мб.
Для VMware ESX неприятным моментом стало увеличение размера страницы в Windows с 4kb до 2mb.

Дедубликация страниц меньшего объёма более вероятна.
источник

A

Alex in Compiler Development
K R
А есть варианты с перераспределением функций? Когда вы делаете "полную подстановку", а потом анализируя граф протока управления перенарезаете программу на функции?
Перенарезание функций (с целью уменьшения размера кода) может приводить к ухудшению скорости исполнения иногда довольно серьёзному. Кроме того определить где конкретно перенарезать функцию довольно сложно.
источник

V

Vlad in Compiler Development
Артур Ефимов
Не стоит путать методологию ООП с «синтаксическим сахаром»
Просто не стоит говорить, что O7 поддерживает ООП. Чтобы не вводить людей в заблуждение. Никто ж не говорит, что С поддерживает ООП (при определенной методологии).
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Можно также назвать ООП "Стилем программирования", как это делает Непейвода (наряду с функциональным, программированием от событий и т.д.), а затем уже говорить о поддержке языком того или иного стиля
источник