【发布时间】:2015-01-13 03:29:55
【问题描述】:
我正在使用callgrind 分析一些 C++ 代码。这是我第一次这样做。我发现最高级别的函数(我假设是调用所有镜头来启动程序运行的函数)称为_dyld_start。我想知道这到底是什么。
另外,在我的一些需要很长时间运行的程序上,我的main() 函数占用了_dyld_start 调用的所有函数的大约99% 的时间;但是,在运行时间较短(大约半秒)的程序中,我发现main() 只占用了_dyld_start 时间的大约85%,其余时间将占用dyldbootstrap::start()。我假设这是一个与启动 C++ 程序相关的函数。占用_dyld_start 85% 的运行时间是否合理?
我正在使用 C++11 标准编译我的代码。我在我的 OS/X 上编译,所以我使用clang。我的valgrind 版本是 3.10.0。
【问题讨论】:
-
“占用 _dyld_start 85% 的运行时间是否合理?” - 是的,如果您的程序非常短(hello world 或
return 0)或者相当短并且希望动态链接器加载许多共享库(取决于所有图形+openGL 库,创建空窗口并立即关闭它)。如果是十分之一秒的 85%,这仍然是一个很小的值。如果你想有更少的时间 - 不要经常启动新的可执行文件,使用线程或寿命更长的进程并与它们通信。
标签: c++ macos c++11 profiling dyld