Problems
Replacing a call site with an expanded function body can worsen performance in several ways :
- In applications where code size is more important than speed, such as many embedded systems, inlining is usually disadvantageous except for very small functions, such as trivial mutator methods.
- The increase in code size may cause a small, critical section of code to no longer fit in the cache, causing cache misses and slowdown.
- The added variables from the inlined procedure may consume additional registers, and in an area where register pressure is already high this may force spilling, which causes additional RAM accesses.
- A language specification may allow a program to make additional assumptions about arguments to procedures that it can no longer make after the procedure is inlined.
- If code size is increased too much, resource constraints such as RAM size may be exceeded, leading to programs that either cannot be run or that cause thrashing. Today, this is unlikely to be an issue with desktop or server computers except with very aggressive inlining, but it can still be an issue for embedded systems.
Typically, compiler developers keep these issues in mind, and incorporate heuristics into their compilers that choose which functions to inline so as to improve performance, rather than worsening it, in most cases.
Read more about this topic: Inline Expansion
Famous quotes containing the word problems:
“I had many problems in my conduct of the office being contrasted with President Kennedys conduct in the office, with my manner of dealing with things and his manner, with my accent and his accent, with my background and his background. He was a great public hero, and anything I did that someone didnt approve of, they would always feel that President Kennedy wouldnt have done that.”
—Lyndon Baines Johnson (19081973)
“Belonging to a group can provide the child with a variety of resources that an individual friendship often cannota sense of collective participation, experience with organizational roles, and group support in the enterprise of growing up. Groups also pose for the child some of the most acute problems of social lifeof inclusion and exclusion, conformity and independence.”
—Zick Rubin (20th century)
“Nothing in the world can take the place of Persistence. Talent will not; nothing is more common than unsuccessful men with talent. Genius will not; unrewarded genius is almost a proverb. Education will not; the world is full of educated derelicts. Persistence and Determination alone are omnipotent. The slogan Press On, has solved and will always solve the problems of the human race.”
—Calvin Coolidge (18721933)