компиляции? т.е. и в бинарнике её быть не должно?
Это значит что её всегда можно выполнить при компиляции, что позволяет использовать её в определениях констант
и из этого получается аналог inline?
Нет. Константы считаются при компиляции и результат копипастится везде где они используются, как сишные #define. Inline это указание для компилятора предпочитать вместо вызыва функции вставлять копию ее тела.
т.е. Inline приводит к увеличению веса бинарника и скорости выполнения? (особенно, если вызов функции в цикле)
В случае сферической коровы в вакууме, да, в реальности есть исключения. Плюс, если я правильно помню, атрибут inline не гарантирует что компилятор тебя послушается.
Не всегда инлайн приводит к росту скорости, так как большой бинарь хуже влезает в кеш
Но как отследить, заинлайнелась функция или нет? компилятор же сам решает, исходя из opt-level и прочего.
а какую проблему ты с помощью этого знания хочешь решить?
наверняка - наверное только смотреть в бинарь и мб можно вытянуть optimization report из компилятора и его распарсить (более чем уверен, что он не настолько гранулярный). Но вообще тебе должно хватить #[inline(always)]
Обсуждают сегодня