Що таке "поступовий зв'язок"?


105

Я переглянув MSDN Microsoft і всюди в Інтернеті, але все ще не зміг зрозуміти, що це таке.

Чи означає це, що завершена програма завантажує DLL в різний час під час її виконання, як призначається всім відразу після запуску?

Я цілком далеко? :)


1
Я додав відповідь на GNU а.с. але він був видалений, ось схожий: stackoverflow.com/questions/29391965 / ...
Чіро Сантіллі郝海东冠状病六四事件法轮功

Він був видалений з - за копіювання, вставки і Розбіжність погано - незалежно від того , наскільки добре зміст en.wikipedia.org/wiki/Don%27t_repeat_yourself
БЕРЕЗЕНЬ

Відповіді:


122

Зв'язування включає в себе упаковку всіх .obj-файлів, створених з вихідних файлів, а також усіх .lib-файлів, на які ви посилаєтесь, у свій вихід (наприклад, .exe або .dll).

Без поступових зв'язків, це потрібно робити щоразу з нуля.

Поступове посилання посилає ваш exe / dll таким чином, що полегшує оновлення оновити існуючий exe / dll, коли ви внесете невеликі зміни та повторно компілюєте.

Отже, додаткове зв’язування просто пришвидшує складання та зв’язок вашого проекту.

Єдиний ефект виконання, який він може мати, це те, що він може зробити ваш exe / dll трохи більшим і повільнішим, як описано тут:

http://msdn.microsoft.com/en-us/library/4khtbfyf.aspx

Редагувати: Як згадував Логан, додаткове посилання також не сумісне з генерацією коду часу посилання - тому втрачається можлива оптимізація продуктивності.

Можливо, ви хочете використовувати інкрементальне посилання для налагодження версій для прискорення розвитку, але відключити його для версій версій для підвищення продуктивності виконання.

Затримка завантажених DLL файлів може бути те, про що ви думаєте:

http://msdn.microsoft.com/en-us/library/151kt790.aspx


Ах, я думав, лінкери завжди так робили! Отже, відключення incremental linkingзмусить лінкер зв'язати все з нуля кожного разу?
Рассел

6
"На практиці вплив цього, мабуть, не варто турбувати". напевно, варто згадати, що хоча різниця між "нормальним" зв'язком і поступовим зв’язком може бути не такою великою ефективністю, яка працює на час виконання, поступове з'єднання несумісне з генерацією коду часу посилання, що може призвести до різкої різниці в продуктивності.
Логан Капальдо,

2
@Russel: Так, так і буде. @Logan: Дякую, я оновив свою відповідь.
Саксонське Друче,

Так це означає, що ми повинні відключити цей варіант для нарощування виробництва?
RBT

1
@RBT, так, ти повинен.
Аджай

15

Крім того, важливо, що додаткове посилання є необхідною умовою Edit&Continue- можливість редагувати ваш код і перекомпілювати його на льоту, без перезавантаження.

Тож добре мати налагодження на налагодженнях, але не випускати збірки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.