Premature optimization is the root of all evil -- DonaldKnuth
Un buon articolo che tratta questo argomento:
E lo dice uno che negli anni 80 passava il tempo ottimizzando codice assembly per processori 680x0, continuo tuttora a ottimizzare codice per lavoro (i clienti vogliono applicazioni il più possibile reattive)
Ma tornando a questo caso in particolare. Quello che hai notato è un peggioramento del tempo di esecuzione dovuto al fatto di chiamare il metodo di una classe invece di chiamare direttamente una funzione. Sono due cose diverse, diversi compilatori sono capaci di ottimizzare meglio o peggio. Ma il grosso problema del tuo codice sta nel codice stesso, dove chiami una funzione in un ciclo chiuso (tight loop) miliardi di volte. Questo porterà sempre problemi di efficienza, è una tecnica che si evita. Pensa se la funzione che chiami non faccia parte del tuo assembly, se addirittura non sia neanche nella memoria del tuo programma (per esempio sia parte di un servizio), chiamate Out-Process sono da usare con molta precauzione.
Un buon articolo che tratta questo argomento:
E lo dice uno che negli anni 80 passava il tempo ottimizzando codice assembly per processori 680x0, continuo tuttora a ottimizzare codice per lavoro (i clienti vogliono applicazioni il più possibile reattive)
Ma tornando a questo caso in particolare. Quello che hai notato è un peggioramento del tempo di esecuzione dovuto al fatto di chiamare il metodo di una classe invece di chiamare direttamente una funzione. Sono due cose diverse, diversi compilatori sono capaci di ottimizzare meglio o peggio. Ma il grosso problema del tuo codice sta nel codice stesso, dove chiami una funzione in un ciclo chiuso (tight loop) miliardi di volte. Questo porterà sempre problemi di efficienza, è una tecnica che si evita. Pensa se la funzione che chiami non faccia parte del tuo assembly, se addirittura non sia neanche nella memoria del tuo programma (per esempio sia parte di un servizio), chiamate Out-Process sono da usare con molta precauzione.