2 ms·
Function calls have an overhead, and if the function is only used once it makes no sense to break it out. It also makes no sense to have a rule on the maximum
by naikrovek 6y ago
Function calls have an overhead, and if the function is only used once it makes no sense to break it out.
It also makes no sense to have a rule on the maximum number of lines for a function. These rules are often created by people who don't write software that needs to have high performance.
- TravHatesMe 6y agoThe compiler does a lot of optimizing, including inlining function calls so that they do not have overhead. My opinion is to favour readable and maintainable code. If there is a performance issue, then profile it, measure and then optimize. No need to prematurely optimize at the cost of code quality.
- kryptiskt 6y agoA function that is called once will always be inlined. Trust the compiler.
- MauranKilom 6y ago> A function that is called once will always be inlined. That is objectively false. Even though I agree with the spirit. For starters, unoptimized builds won't have that. Second, exceptions tend to inhibit inlining. Compare https://godbolt.org/z/c8Jayf https://godbolt.org/z/c8Jayf with https://godbolt.org/z/Uoo2YA https://godbolt.org/z/Uoo2YA. Third, it's easy enough to push one of the heuristics used for inlining high enough in the wrong direction (e.g. function size). I recommend the clang optimizer view on godbolt. Also note that it can be hard for a compiler to prove that a function is not used outside the current translation unit (although anonymous namespaces help with that). Number of calls is only one of the heuristics for inlining though anyway.
- naikrovek 6y agoAll languages? No. Compilers are plenty stupid, and have not earned blind trust.