In C, we have used the Macro function, and optimized technique used by compilers to reduce the execution time, etc. So Question comes to mind: what’s there in C++ for that and in what better ways? Inline function is introduced which is an optimization technique used by the compilers especially to reduce the execution time. We will cover the “what, why, when & how” of inline functions.
Edureify provides courses in different languages which can help the students in making a career in coding courses and more. You can find courses related to the C++ language, JAVA language, Go, Ruby language, etc. Do check the coding courses at Edureify now.
What is an inline function?
The inline functions are a C++ enhancement feature to increase the execution time of a program. Functions can be instructed to the compiler to make them inline so that the compiler can replace those function definitions wherever those are being called. The compiler replaces the definition of inline functions at compile time instead of referring to function definition at runtime.
NOTE- This is just a suggestion to the compiler to make the function inline, if the function is big (in terms of executable instruction etc) then, the compiler can ignore the “inline” request and treat the function as a normal function.
How to make function inline:
To make any function inline, start its definitions with the keyword “inline”.
Example –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Output
Class B { Public: inline int add(int x, int y) { return (x + y); }; } Class B { Public: int add(int x, int y); }; inline int B::add(int x, int y) { return (x + y); }
Why use C++ Inline Function?
In many places, we create the functions for small work/functionality which contain simple and less executable instructions. Imagine their calling overhead each time they are being called by callers.
When a normal function call instruction is encountered, the program stores the memory address of the instructions immediately following the function call statement, loads the function being called into the memory, copies argument values, jumps to the memory location of the called function, executes the function codes, stores the return value of the function, and then jumps back to the address of the instruction that was saved just before executing the called function. Too much run time overhead.
The C++ inline function provides an alternative. With an inline keyword, the compiler replaces the function call statement with the function code itself (a process called expansion) and then compiles the entire code. Thus, with inline functions, the compiler does not have to jump to another location to execute the function, and then jump back as the code of the called function is already available to the calling program.
JAVA Encapsulation is one of the most fundamental parts of the JAVA language. Learn about it more through the article.
With below pros, cons, and performance analysis, you will be able to understand the “why” for an inline keyword.
Pros:-
- It speeds up your program by avoiding function calling overhead.
- It saves the overhead of variables push/pop on the stack when function calling happens.
- It saves the overhead of a return call from a function.
- It increases the locality of reference by utilizing an instruction cache.
- By marking it as inline, you can put a function definition in a header file (i.e. it can be included in multiple compilation units, without the linker complaining)
Cons:-
- It increases the executable size due to code expansion.
- C++ inlining is resolved at compile time. This means if you change the code of the inlined function, you would need to recompile all the code using it to make sure it will be updated
- When used in a header, it makes your header file larger with information that users don’t care about.
- As mentioned above it increases the executable size, which may cause thrashing in memory. More page faults bring down your program performance.
- Sometimes not useful for example in embedded systems where large executable size is not preferred at all due to memory constraints.
When to use –
The function can be made inline as per the programmer’s need. Some useful recommendations are mentioned below-
- Use the inline function when performance is needed.
- Use inline function over macros.
- Prefer to use inline keywords outside the class with the function definition to hide implementation details.
Grab the opportunity to learn about the various coding languages with the help of Edureify. There are many coding courses online and available for students at an affordable price.
Key Points –
- It’s just suggestions, not a compulsion. The compiler may or may not inline the functions you marked as inline. It may also decide to inline functions not marked as inline at compilation or linking time.
- Inline works like a copy/paste controlled by the compiler, which is quite different from a preprocessor macro: The macro will be forcibly inlined, will pollute all the namespaces and code, and won’t be easy to debug.
- All the member functions declared and defined within the class are Inline by default. So no need to define it explicitly.
- Virtual methods are not supposed to be inlinable. Still, sometimes, when the compiler can know for sure the type of the object (i.e. the object was declared and constructed inside the same function body), even a virtual function will be inlined because the compiler knows exactly the type of the object.
- Template methods/functions are not always inlined (their presence in a header will not make them automatically inline).
- Most of the compiler would do in-lining for recursive functions but some compiler provides #pragmas-
Microsoft c++ compiler – inline_recursion(on) and once can also control its limit with inline_depth.
In GCC, you can also pass this in from the command line with max line incursion.
Types of Courses in C++ Language and its scope
People often want to learn the C++ language but they are unaware of the fact that there are many online coding courses in C++. Let’s check out the courses and salaries associated with them.
- C++ Developer= 20k to 35k per month
- C++ Language Trainer= 30k to 50k per month
- Web Development in C++= 35k to 50k per month
Some of the other career opportunities are as follows:-
- C++ Embedding Analyst
- C++ Data compiler
- C++ data analyst
The top recruiting companies concerning C++ are as follows:-
- Wipro– 30 vacancies
- Bentley Systems– Software Developer- 45 vacancies
- HCL Technologies– C++ Developer- 30 vacancies
Frequently Asked Questions (FAQs)
Question:- What is an inline function in C++?
A:- Inline function in C++ is an enhancement feature that improves the execution time and speed of the program. The main advantage of inline functions is that you can use them with C++ classes as well.
Question:- What is inline function?
Answer:- An inline function is one for which the compiler copies the code from the function definition directly into the code of the calling function rather than creating a separate set of instructions in memory. This eliminates call-linkage overhead and can expose significant optimization opportunities.
Question:- Why do we need an inline function in C++?
A:- The main use of the inline function in C++ is to save memory space. Whenever the function is called, then it takes a lot of time to execute the tasks, such as moving to the calling function.
Question:- When inline functions are invoked?
The A:-Inline function is a request to the compiler and an optimization technique used by the compiler. So, the answer is right, Inline functions are invoked at Compile time. Inline function is a combination of macro and function. Inline functions are like macros in the C language.