Vorrei indovinare che è un modo per rendere leggermente migliori le app che non la usano affatto. Ecco il mio pensiero su questo.
I sistemi operativi x86 (e immagino altri) devono memorizzare lo stato della FPU sull'interruttore di contesto. Tuttavia, la maggior parte dei sistemi operativi si preoccupa solo di salvare/ripristinare questo stato dopo che l'app tenta di utilizzare la FPU per la prima volta.
In aggiunta a questo, c'è probabilmente un codice di base nella libreria matematica che imposterà la FPU in uno stato di base sensato quando la libreria viene caricata.
Quindi, se non si collega affatto alcun codice matematico, niente di tutto ciò accadrà, quindi il sistema operativo non deve salvare/ripristinare alcuno stato FPU, rendendo gli switch di contesto leggermente più efficienti.
Solo un'ipotesi però.
EDIT: in risposta ad alcuni dei commenti, la stessa premessa di base si applica ancora ai casi non FPU (la premessa è che era di rendere le applicazioni che non si avvalgono libm eseguire un po 'meglio). Ad esempio, se c'è una FPU soft che era simile ai primi giorni di C. Quindi avere libm separato potrebbe impedire di inserire un codice molto grande (e lento se usato) da inutilmente collegato.
Inoltre, se è disponibile solo il collegamento statico, si applica un argomento simile che manterrebbe le dimensioni eseguibili e i tempi di compilazione.
fonte
2009-06-23 17:13:39
OK, quindi questa diventa una domanda di progettazione della libreria - perché le librerie sono partizionate in questo modo? –
Scommetto di ottimizzare i tempi di compilazione di UNIX stesso (e il set di strumenti che è andato di pari passo con esso). A quel tempo, era probabilmente la cosa più complessa che era stata costruita in C. –
niente a che fare con l'emulazione di fpu? ma per Linux l'eventuale emulazione è nel kernel e non nella libm .. giusto? –