Я профилирую код C++ с callgrind
. Это мой первый раз. Я нахожу, что функция наивысшего уровня (тот, который, как я предполагаю, вызывает все снимки для запуска программы), называется _dyld_start
. Мне интересно, что это такое.Что означает «_dyld_start» в моих профилирующих результатах?
Кроме того, на некоторых моих программах, которые занимают много времени, моя функция main()
занимает около 99% времени всех функций, вызываемых _dyld_start
; однако в моей программе, которая занимает более короткое время (примерно полсекунды), я нахожу, что main()
занимает около 85% времени _dyld_start
, остальное - dyldbootstrap::start()
. Я предполагаю, что это функция, связанная с запуском C++-программы. Является ли разумным, чтобы он принимал 85% от времени работы _dyld_start
?
Я компилирую свой код, используя стандарт C++ 11. Я компиляции на моем OS/X, поэтому я использую clang
. Моя версия valgrind
составляет 3.10.0.
« Разве разумно, что это займет 85% времени работы _dyld_start? » - да, если ваша программа очень короткая (hello world или 'return 0') или, скорее, короткая, и хочет, чтобы динамический компоновщик загружал много разделяемых библиотек (зависит от всех графических + openGL libs, создает пустые окна и сразу же закрывает их). Если это 85% одной десятой секунды, это все еще небольшое значение. Если вы хотите иметь меньше времени - не запускайте новый исполняемый файл очень часто, используйте потоки или более длительные процессы и общайтесь с ними. – osgx