8

Ho un binario di grandi dimensioni che è costituito da molte librerie statiche e file standalone cpp. È configurato per utilizzare il collegamento incrementale, tutte le ottimizzazioni sono disabilitate da /Od - è una build di debug.Basso rendimento del collegamento incrementale

Ho notato che se cambio un file cpp autonomo, il collegamento incrementale scorre veloce - 1 min. Ma se cambio qualche cpp in una libreria statica, funziona a lungo - 10 minuti, allo stesso tempo del normale collegamento. In questo caso non ottengo alcun beneficio dal collegamento incrementale. È possibile accelerarlo? Io uso VS2005.

+0

Si modifica solo il file .lib o un file di intestazione effettivo, in quest'ultimo caso non è realmente possibile (ma è possibile vedere alcuni vantaggi dall'utilizzo di pch). – KillianDS

+0

Sto cambiando solo un file cpp da .lib. – ks1322

+0

Controllare il progetto .lib per le opzioni/Yu e/Z7. –

risposta

7

Impostare "Use Library Dependency Inputs" nella pagina delle proprietà di Linker General per il progetto. Ciò collegherà i singoli file .obj dalla dipendenza .lib invece del .lib, che potrebbe avere alcuni effetti collaterali diversi.

+0

Sono d'accordo, questa impostazione è molto utile per sputare il collegamento. –

+1

Sì - questo risponde direttamente alla domanda. Usavo un prodotto chiamato Xoreax Incredibuild con Visual Studio 2003; ha una caratteristica che ha soprannominato "Incredilink" che ha fatto esattamente questo. Ha avuto un enorme impatto sulla riduzione dei tempi di costruzione. Sembra che la funzionalità sia stata attivata direttamente in Visual Studio 2005. –

+0

@MSN Grazie. Il mio tipo di progetto è il progetto MakeFile. Non esiste una pagina di proprietà Linker in questo tipo di progetto. Posso comunque impostare questa proprietà? O passarlo alla riga di comando del linker? Ad ogni modo +1 per la risposta. – ks1322

2

Ho intenzione di darvi un diverso tipo di risposta. Hardware.

Qual è il tuo ambiente di sviluppo? Esiste comunque più RAM o per mettere il tuo progetto su Solid State Drive? Ho scoperto che l'uso di un SSD velocizzava i tempi di collegamento di un ordine di grandezza sui miei progetti di lavoro. Ho aiutato un po 'a compilare i tempi, ma il collegamento era enorme. Anche un sistema più veloce, ovviamente, ha aiutato.

+0

+1 per la soluzione hardware. SSD accelererebbe. Quasi -1 per altri suggerimenti come la RAM (quanto dovrebbe essere grande un progetto che richiede più del normale 2-4-6 GB di RAM?) O sistema più veloce (quale sistema vuoi dire?) –

+0

Saresti sorpreso su cosa tipo di sistemi che le persone tentano di codificare su @Andy. Quando ho aggiornato da una vecchia scatola dual core 2Gig RAM WinXP a una scatola quad core 8gig Win7, tutto è diventato un po 'più veloce. Un aumento non così grande come il SSD, ma una differenza che vale la pena menzionare. –

+0

+1 per la memoria SSD – ks1322

0

Se ho capito correttamente (dopo aver utilizzato Visual Stuio per alcuni anni), la funzionalità di collegamento incrementale non funziona per i file oggetto che fanno parte delle librerie statiche.

Un modo per risolvere questo problema consiste nel ristrutturare la soluzione in modo che il progetto applicativo contenga tutti i file sorgente.

+0

Grazie. Potresti fornire collegamenti a MSDN o altre risorse per confermare questo? Voglio essere sicuro che il collegamento incrementale sia impossibile con i file oggetto dalle librerie statiche. – ks1322

+0

Siamo spiacenti, no, questo si basa sulla mia esperienza con gli strumenti. – Lindydancer