Каждый раз, когда я читаю о ключевом слове inline
в C ++, есть длинное объяснение, что компилятор выполняет анализ «скорость по сравнению с объемом кода», а затем решает, встроить ли вызов функции в каждом конкретном случае.
Теперь в Visual C ++ 9 есть ключевое слово __forceinline
, которое, кажется, заставляет компилятор встроить вызов функции, если такое встраивание абсолютно невозможно (например, вызов виртуален).
Предположим, я просматриваю какой-то проект, не понимая, что происходит внутри него, и сам решаю, что треть функций достаточно мала и хороша для вставки, и помечаю их __forceinline
, и компилятор делает их встроенными, и теперь исполняемый файл стал сказать в сто раз больше.
Это действительно имеет значение? Какого эффекта следует ожидать от чрезмерно агрессивных функций, встроенных в сотни раз?