Вопрос по опт. компиляторам

Пользователь
Статус
Оффлайн
Регистрация
18 Фев 2022
Сообщения
592
Реакции[?]
100
Поинты[?]
40K
Знатоки, как компилятор будет обрабатывать подобную программу? (речь о релиз билде программы с 2+ левелом оптимизации, дебаг не учитываем):
pseudocode:
var name = "govard";

print("{name}")

Будет ли он сохранять переменную name в памяти, или просто сделает такое, логичное как по мне преобразование:
pseudocode:
print("govard")
Если не сделает, то почему? Разве это не будет эффективнее с точки зрения оптимизации?

Я могу понять, почему например вот такая переменная будет сохранена в памяти:
pseudocode:
var hard_calculations = 2 * 4313 / 413 * 134 + 4341 / 3;


print("{hard_calculations}")
Всегда приятнее найти готовое вычисленное значение где-то в памяти, чем напрягать процессор. Но, что на счет строковых литералов или подобных простых, возможно даже одноразовых переменных выступающих в роли алиасов?
 
Последнее редактирование:
эксперт в майнкрафт апи
Read Only
Статус
Оффлайн
Регистрация
25 Янв 2023
Сообщения
676
Реакции[?]
284
Поинты[?]
22K
вопрос надо конкретизировать средой выполнения, AOT компилятором.

а вообще:
на CPU оптимизируют выбором алгоритма(где появится минимальная сложность выполнения) под конкретную задачу ПОСТФАКТУМ(для этого функционал взаимодействия инкапсулируют), а не просчитываем и инлайном "очевидных" констант, которые разумеется за тебя сделает любой нормальный jit/aot.
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,595
Реакции[?]
602
Поинты[?]
43K
Сверху Снизу