File di sorgenti multiple e librerie per un singolo progetto

3

Scrivo molti software scientifici e ho iniziato a programmare con F77. Mi sono trasferito al C ++ per la mia programmazione primaria circa 10 anni fa ora, ma mi sorprendo ad usare le abitudini F77. Una cosa a cui non riesco ad abituarmi è l'uso della biblioteca. Per essere chiari, capisco perché uno vorrebbe usarne uno, ma per la maggior parte del codice che scrivo, nessuno tranne l'utente finale ei manutentori useranno mai le routine che scrivo, quindi mi chiedo l'utilità per me.

Ok, quindi le librerie ti danno un buon posto dove riporre il codice riutilizzabile che è facile da seguire e mantenere. Ma i file sorgente separati non hanno già risolto il problema per la mia situazione? Quale vantaggio otterrei mettendo i miei file sorgente in una libreria? Posso capire il risparmio di dimensioni dei file eseguibili con le librerie condivise, ma è così importante? Ho un sacco di routine matematiche che sono generali e potrebbero essere estratte in una libreria condivisa, ma dovrei? Molti di loro vengono chiamati una sola volta da un singolo punto nel mio codice, e di solito solo da un singolo progetto, quindi guadagno qualcosa? Il risparmio di memoria non è andato perso nel momento in cui il simbolo è stato risolto e il codice è stato caricato? Grazie.

    
posta Fadecomic 03.02.2012 - 15:49
fonte

1 risposta

4

Nella tua situazione, guadagneresti molto poco. In effetti, ti ritroverai con una leggera perdita netta dato che ora hai un programma e una libreria da mantenere invece di un solo programma.

Quello che stai guardando veramente è una questione di dove finiscono i file oggetto per ciascuna delle tue fonti, e mantenerle tutte in un posto è perfettamente accettabile finché non devono essere condivise. La cosa importante è assicurarsi che il tuo codice sia ben organizzato e modulare in modo che quando arriva il momento di condividere le parti generiche con un secondo progetto, la suddivisione non sarà un problema.

Come dimensione eseguibile, il codice è codice indipendentemente da dove proviene. La maggior parte dei sistemi operativi moderni richiede la pagina dei propri eseguibili e condividerà le pagine dello stesso binario su più copie contemporaneamente. Il codice che viene utilizzato in molti programmi (ad es. La libreria C) ha senso in una libreria condivisa. Per tutto ciò che verrà usato esattamente una volta, non farà molta differenza se si trova in un binario statico o in uno che si collega alle librerie condivise. (C'è un ulteriore sovraccarico nel collegamento dinamico rispetto a quello statico, ma in generale quei capelli non hanno bisogno di essere divisi.)

    
risposta data 03.02.2012 - 16:16
fonte

Leggi altre domande sui tag