Sto progettando un software matematico con algoritmi che funzionano per tipi di interi generici come input macchina o interi GMP. Per quanto riguarda le prestazioni, in genere si vuole lavorare con le macchine, ma se c'è un overflow, allora si potrebbe voler provare a passare a GMP; idealmente in fase di esecuzione. Finora l'intero programma è stato scritto come modello sul tipo intero. Man mano che la libreria cresce, il dolore aumenta:Come astrarre il tipo intero in un software matematico
- Il tempo di compilazione e il consumo di memoria stanno sfuggendo di mano.
- I messaggi di errore in fase di compilazione sono meno utili.
- Il debug è più doloroso.
- L'intero codice si trova nei file di intestazione.
Posso pensare alla seguente soluzione. Rifatta il codice in modo che dipenda da un tipo fisso che viene tipizzato tramite una macro di tempo di compilazione. Quindi crea diverse copie della libreria, una per ogni tipo di intero e collegale insieme nell'eseguibile. Lo svantaggio sembra essere che ho bisogno di un'interfaccia della libreria a se stessa.
La domanda breve sarebbe: quali sono i modelli di progettazione per le situazioni in cui quasi l'intero programma dipende da un tipo?
Non ottimizzarlo prematuramente (Knuth) - la GMP (GNU Multiple Precision Arithmetic Library) è abbastanza brava a gestire il piccolo 'int's per le prestazioni e ad aumentarne le dimensioni quando necessario. Non cercare di reinventarlo! – danodonovan