我正在优化某些代码的性能,发现第三方共享库中func()
的调用每隔几分钟就会太慢。例如,如果我在一个循环中调用了10次,则第一个调用与其他调用相比非常慢。几分钟后,我重复了相同的操作并获得了相同的结果。我怀疑根本原因是缓存丢失(数据和指令)。因此,如果我可以在调用此函数之前加载指令以缓存,那么该函数的第一次调用可能会比以前更快。
我计划在调用之前使用memcpy()
访问func()
的地址。但是问题是func()
调用了也在共享库中定义的其他函数,而我无法访问这些函数的地址。
根据以下问题:How to make backtrace()/backtrace_symbols() print the function names?,我知道backtrace()
/ backtrace_symbols()
可用于打印堆栈回溯,但是在第三方共享中是否可以打印函数调用的堆栈回溯库?
顺便说一句:感谢您提供有关预加载要缓存的指令的建议。