Нахождение узких мест времени ссылки - PullRequest
10 голосов
/ 22 сентября 2010

На вопрос, который я не видел, ответили, что я нахожу очень интересным.Кажется, что все другие потоки обсуждают форсирование проблемы, то есть переключение на динамическое связывание или просто распределение рабочей нагрузки.Я больше заинтересован в том, чтобы на самом деле выяснить, что вызывает ссылки так долго.

Проблема в том, что я не вижу официальных способов получить соответствующие метрики от компоновщика, по крайней мере, для компоновщика VS.Есть ключ / verbose, который даст вам полное представление о том, что делает компоновщик, но он вообще не даст вам каких-либо мелких деталей.

Я думал о запуске процесса компоновщика из инструмента, который выполняет фактические измерения для каждой строки.Хотя это не обеспечит точную синхронизацию, вероятно, оно будет достаточно точным, чтобы точно определить узкие места при связывании.

Кто-нибудь знает лучший подход или, возможно, инструмент для этой задачи?

Ответы [ 2 ]

7 голосов
/ 22 сентября 2010

Обнаружена отличная серия статей по этому вопросу на http://gameangst.com/?p=46, в которой достаточно подробно рассказывается о том, что влияет на время ссылки. В конце автор также предоставляет программу, которую он называет сортировкой символов (на http://gameangst.com/?p=320). Это программа, которую я искал, так как она помогает точно определить, на что тратить ваши усилия. Не больно, что потребовалось около 10 секунд, чтобы запустить его и запустить!

3 голосов
/ 22 сентября 2010

Хотя прямо не отвечаю на ваш вопрос:

В VS компоновщик также отвечает за генерацию кода и глобальную оптимизацию, вы можете попробовать отключить «Генерацию временного кода связи», чтобы уменьшить время соединения.

РЕДАКТИРОВАТЬ: Таким образом, из-за глобальной природы компоновщика, вы не можете сказать, что связывание модуля X занимает 10% времени.

...