Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8082695
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 5, 20262026-06-05T17:12:21+00:00 2026-06-05T17:12:21+00:00

I remember hearing somewhere that large functions might have higher execution times because of

  • 0

I remember hearing somewhere that “large functions might have higher execution times” because of code size, and CPU cache or something like that.

How can I tell if function size is imposing a performance hit for my application? How can I optimize against this? I have a CPU intensive computation that I have split into (as many threads as there are CPU cores). The main thread waits until all of the worker threads are finished before continuing.

I happen to be using C++ on Visual Studio 2010, but I’m not sure that’s really important.

Edit:

I’m running a ray tracer that shoots about 5,000 rays per pixel. I create (cores-1) threads (1 per extra core), split the screen into rows, and give each row to a CPU thread. I run the trace function on each thread about 5,000 times per pixel.

I’m actually looking for ways to speed this up. It is possible for me to reduce the size of the main tracing function by refactoring, and I want to know if I should expect to see a performance gain.

A lot of people seem to be answering the wrong question here, I’m looking for an answer to this specific question, even if you think I can probably do better by optimizing the contents of the function, I want to know if there is a function size/performance relationship.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-05T17:12:22+00:00Added an answer on June 5, 2026 at 5:12 pm

    It’s not really the size of the function, it’s the total size of the code that gets cached when it runs. You aren’t going to speed things up by splitting code into a greater number of smaller functions, unless some of those functions aren’t called at all in your critical code path, and hence don’t need to occupy any cache. Besides, any attempt you make to split code into multiple functions might get reversed by the compiler, if it decides to inline them.

    So it’s not really possible to say whether your current code is “imposing a performance hit”. A hit compared with which of the many, many ways that you could have structured your code differently? And you can’t reasonably expect changes of that kind to make any particular difference to performance.

    I suppose that what you’re looking for is instructions that are rarely executed (your profiler will tell you which they are), but are located in the close vicinity of instructions that are executed a lot (and hence will need to be in cache a lot, and will pull in the cache line around them). If you can cluster the commonly-executed code together, you’ll get more out of your instruction cache.

    Practically speaking though, this is not a very fruitful line of optimization. It’s unlikely you’ll make much difference. If nothing else, your commonly-executed code is probably quite small and adjacent already, it’ll be some small number of tight loops somewhere (your profiler will tell you where). And cache lines at the lowest levels are typically small (of the order of 32 or 64 bytes), so you’d need some very fine re-arrangement of code. C++ puts a lot between you and the object code, that obstructs careful placement of instructions in memory.

    Tools like perf can give you information on cache misses – most of those won’t be for executable code, but on most systems it really doesn’t matter which cache misses you’re avoiding: if you can avoid some then you’ll speed your code up. Perhaps not by a lot, unless it’s a lot of misses, but some.

    Anyway, what context did you hear this? The most common one I’ve heard it come up in, is the idea that function inlining is sometimes counter-productive, because sometimes the overhead of the code bloat is greater than the function call overhead avoided. I’m not sure, but profile-guided optimization might help with that, if your compiler supports it. A fairly plausible profile-guided optimization is to preferentially inline at call sites that are executed a larger number of times, leaving colder code smaller, with less overhead to load and fix up in the first place, and (hopefully) less disruptive to the instruction cache when it is pulled in. Somebody with far more knowledge of compilers than me, will have thought hard about whether that’s a good profile-guided optimization, and therefore decided whether or not to implement it.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I remember hearing that the following code is not C++ compliant and was hoping
I remember years ago hearing that it is more efficient to have loops decrementing
I remember reading somewhere that Hadoop's performance deteriorates significantly if the machines it runs
I remember hearing about a general optimization problem that relates to function closures, stating
I remember reading somewhere that function arguments get turned into private variables within the
I remember reading somewhere (maybe someone can help remember where), that there is a
I know that Hpricot is still a standard but I remember hearing about a
I have a function that is very small, but is called so many times
I remember hearing that for performance a development machine should be 32 bit, while
I remember hearing a long time ago that it was considered best practice to

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.