In C #, è buona norma utilizzare conversioni numeriche implicite da int a float?

2

Ad esempio:

if(5.0f > 1) { }

Ha una penalità significativa nelle prestazioni? Rispetto a solo fare

if(5.0f > 1.0f) { }
    
posta Pablo J. Martínez 12.07.2015 - 03:30
fonte

1 risposta

5

Negli esempi che hai fornito probabilmente non c'è alcuna differenza, dal momento che tutte le conversioni necessarie verranno eseguite molto probabilmente in fase di compilazione.

Quanto segue comporta una leggera penalizzazione delle prestazioni:

if( floatVariable > intVariable )

La penalità sarà dell'ordine di un ciclo di clock aggiuntivo. (Forse due? Tre cicli di clock al massimo? È ancora dello stesso ordine.)

È significativo? Dipende dal tipo di cose che stai facendo. Se stai lavorando su un software di elaborazione estremamente intensivo dal punto di vista computazionale, come i modelli di simulazione meteorologica per la meteorologia, allora sarà significativo. Appena. Se stai facendo qualcosa di meno intenso di questo, è uno scherzo perdere persino tempo a pensarci.

In realtà, se riempi il tuo software con conversioni tra float e int, e il software che stai scrivendo è un'applicazione run of the mill, e viene pubblicato e viene installato su un paio di migliaia di computer, e le persone lo usano ogni giorno e tienilo installato per una media di un anno, il tempo che hai già sprecato scrivendo questa domanda e leggendo questa risposta è probabilmente più del tempo totale che sarà sprecato da tutti quelli utenti insieme, per tutto l'anno.

    
risposta data 12.07.2015 - 04:26
fonte

Leggi altre domande sui tag