Разница между встроенной и обычной функцией в С++
Встроенная функция — это функция, которая расширяется компилятором при ее вызове. Во время вызова функции выполняется множество служебных задач, таких как сохранение регистров, помещение аргументов в стек и возврат к вызывающей функции. Эти накладные расходы отнимают много времени и неэффективны для функций небольшого размера. В C++ для решения этих накладных расходов используется встроенная функция. Он расширяется в соответствии с компилятор при его вызове, что позволяет избежать накладных расходов. Ключевое слово, известное как « inline » , используется перед объявление функции.
Синтаксис:
inline return_type function_name(parameters) { // Insert your Function code here }
Пример:
Теперь остановимся на следующей функции. Судя по названию, Normal Function — это, по сути, обычная функция в C++. Это способствует повторному использованию кода и делает программу модульной. Во время вызовов функций выполняется множество служебных задач, таких как сохранение регистров, помещение аргументов в стек и возврат к вызывающей функции.
Синтаксис:
return_type_name function_name( parameters) { // Insert your Function code here }
Пример:
Разница между встроенной функцией и нормальной функцией в С++
С.№ | Встроенная функция | Нормальная функция |
---|---|---|
1. | Он расширяется встроенным при вызове. | Это функция, обеспечивающая модульность программы. |
2. | Обычно используется для увеличения времени выполнения программы. | Обычно он используется для улучшения возможности повторного использования кода и упрощения его сопровождения. |
3. | В основном это функция, которая используется, когда функции маленькие и вызываются очень часто. | По сути, это группа операторов, выполняющих определенную задачу. Он используется, когда функции большие. |
4. | В его объявлении требуется ключевое слово ' inline ' . | Он не требует никакого ключевого слова в своем объявлении. |
5. | Обычно он выполняется намного быстрее по сравнению с обычными функциями. | Обычно он выполняется медленнее, чем встроенная функция для функции небольшого размера. |
6. | При этом корпус функций копируется в каждый контекст, где он используется, что, в свою очередь, сокращает время поиска тела в запоминающем устройстве или на жестком диске. | При этом тело функции хранится на запоминающем устройстве, и когда эта конкретная функция вызывается каждый раз, ЦП должен загрузить тело с жесткого диска в ОЗУ для выполнения. |
7. | Компилятор всегда размещает копию кода этой функции в каждой точке, где функция вызывается во время компиляции. | Он не обеспечивает такой тип функциональности. |
8. | Обычно он включает только 2–3-строчные коды. | Когда количество строковых кодов очень велико, т. е. обычные функции содержат столько кода, сколько необходимо. |
9. | Это немного сложнее понять и протестировать по сравнению с обычным функционированием. | Это гораздо проще понять и протестировать по сравнению со встроенной функцией. |
10. | Функции, присутствующие внутри класса, неявно встроены. | Функции, присутствующие вне класса, считаются нормальными функциями. |
11. | Слишком много встроенных функций влияют на размер файла после компиляции, так как дублируют один и тот же код. | Слишком много обычных функций не влияют на размер файла после компиляции. |