Будет ли когда-нибудь компилятор выпаривать функцию без сохранения состояния? - PullRequest
0 голосов
/ 21 сентября 2018

Допустим, у меня есть следующий код:

function add(a, b)
    return a + b
end

num1 = add(2, 3)
num2 = add(4, 5)
num3 = add(6, 2)
…

Будет ли когда-нибудь компилятор когда-либо компилировать этот код, как если бы он был таким:

num1 = 2 + 3
num2 = 4 + 5
num3 = 6 + 2
…

Если так, есть лиспособ явно сказать им, что вы хотели бы, чтобы они это сделали?Если нет, то почему бы и нет, и есть ли способ заставить их сделать это в любом случае?

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

Поскольку «любой компилятор» настолько смехотворно широк, не стесняйтесь сузить его до выбора популярных языков.

Редактировать: Как поясняет комментарий ниже, компиляторы могут делать постоянное распространение.Рассмотрим следующий код:

function add(a, b)
    return a + b
end

function doStuff(c)
    num1 = add(2, c)
    num2 = add(4, c)
    num3 = add(6, c)
    …
end

Будет ли у add() когда-либо здесь возможность встраиваться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...