tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Functions locality and instruction fetch
Hello,
I remember some years ago I was playing with Sun Studio compilers on
Solaris. I don't remember the exact commands/options, but there was a
way to run your code under a special profiler, which would output
locality information about various functions into a file. Then you could
use this file as input to a compiler, which would generate executable
code, where frequently called functions were placed closer to each
other. In theory this would improve performance due to locality of
reference.
I don't think GCC has anything of that kind, so I thought maybe the
order in which you write functions in source files has similar effects.
For example, say I have a library with 10 functions, f1 - f10. I can
predict that when the library is used, functions will be called in this
order f1 to f10.
The question that was bugging me is this: if in the source file I write
functions in linear order:
f1()
f2()
f3()
...
f10()
will GCC generate their binary code in the same linear order,
clustering them together in memory addresses?
I ran 'nm' on binary files and it seems the above holds true, at least
for GCC, but I would be wrong...
Home |
Main Index |
Thread Index |
Old Index