2009-03-09 11 views

risposta

6

Micro-ottimizzazione è quasi sempre la cosa sbagliata da fare. Non avviarlo nemmeno a meno che il programma non funzioni troppo lentamente e tu usi un profiler per determinare esattamente dove si trovano le parti lente.

Una volta fatto, il mio consiglio è di vedere come migliorare il codice e la località dei dati, perché le carenze nella cache sono quasi certamente peggiori delle istruzioni non ottimali.

Fatto questo, nel caso piuttosto strano che sia possibile utilizzare un approccio basato su assegnazione o basato su confronto, provare entrambi e cronometrarli. Micro-ottimizzazione è un gioco di numeri. Se i numeri non sono abbastanza buoni, scopri perché, quindi verifica che ciò che stai facendo funzioni effettivamente.

Quindi, cosa intendi con un confronto? Salti condizionati causano problemi a qualsiasi processore vagamente moderno, ma i processori diversi fanno cose diverse, e non c'è garanzia che qualsiasi dato rallenti le cose. Inoltre, se uno dei due causa un errore di cache, questo è probabilmente il più lento, non importa quale.

Infine, le lingue vengono normalmente compilate per codice macchina e le cose semplici come confronti e assegnazioni saranno normalmente compilate allo stesso modo. La grande differenza sarà il tipo di CPU.

+0

Non sto eseguendo micro-ottimizzazione, questa era solo una curiosità che ho avuto dopo aver visto alcuni ordinamenti parziali e poi confrontare gli algoritmi. – cmsjr

+0

OK, ma la domanda su quali operazioni sono più veloci è diventata molto più complicata da quando ho iniziato in questo campo. I processori moderni sono davvero complicati e difficili da prevedere. –

+0

mentre la risposta fornita è pratica, evita completamente la domanda: | – Darioush

9

Cosa ne pensi?

Al livello più basso si legge due volte, l'altro legge e scrive.

Ma perché dovrebbe interessarti davvero? Non dovresti preoccuparti delle prestazioni a questo livello. Ottimizza per Big-O

+3

Potresti essere interessato a notare che il libro tratta in gran parte di Big-O. Perché dovrei preoccuparmi? Perché non lo so. – cmsjr

+1

Sono d'accordo sul fatto che si tratti di un'ottica ridicola, ma sapere come funzionano entrambi non è inutile. +1 da me all'OP e questa risposta. –

+0

Pyro, grazie per l'intuizione, se non il tono. – cmsjr

Problemi correlati