Ho iniziato a leggere Algorithms e continuo a chiedermi, quando si tratta di primitive dello stesso tipo, che è l'operazione più costosa, l'assegnazione o il confronto? Questo varia molto tra le lingue?Cosa c'è di più costoso, confronto o assegnazione?
risposta
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.
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
Potresti essere interessato a notare che il libro tratta in gran parte di Big-O. Perché dovrei preoccuparmi? Perché non lo so. – cmsjr
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. –
Pyro, grazie per l'intuizione, se non il tono. – cmsjr
- 1. Quale è più veloce? Confronto o assegnazione?
- 2. Quanto è costoso un cast GUID e confronto rispetto a un confronto di stringhe
- 3. Elasticsearch è gratuito o costoso?
- 4. Cosa c'è di più costoso in ogni visualizzazione di pagina - Scrittura di database o Scrittura di file?
- 5. Il decremento atomico è più costoso dell'incremento?
- 6. variabili pigro python? o, calcolo costoso ritardato
- 7. Strumento di confronto/confronto assemblaggio .NET - Che cosa è disponibile?
- 8. Che cosa è "meno costoso" per le prestazioni $ broadcast o $ watch
- 9. Quanto è costoso eseguire un'operazione di cast Vs i ++?
- 10. Che cosa significa assegnazione di oggetti Java?
- 11. Cosa significa! == operatore di confronto in PHP?
- 12. Cosa rende PHP più lento di Java o C#?
- 13. SSL Cheap vs SSL costoso
- 14. È volatile costoso?
- 15. Confronto (<), uscita (<<) e assegnazione (=) per boost :: opzionale
- 16. Utilizzo memoria Powershell - costoso?
- 17. Listener poco costoso per Firebase
- 18. Assegnazione array Java (più valori)
- 19. Confronto tipo più veloce?
- 20. Metodo di incastonatura (assegnazione) con più argomenti
- 21. Assegnazione di più variabili in Haskell
- 22. Assegnazione di più variabili in Swift
- 23. ciò che è più costoso per la memoria. "creare ed eliminare oggetti" o "riutilizzare un oggetto"?
- 24. Cosa c'è più veloce IN o OR?
- 25. Caching calcolo costoso in elisir
- 26. Che è più costoso "rinomina" o "collega e scollega" in C
- 27. Quanto è costoso il reloadData di UITableView?
- 28. Quando si inizializza in costruttori C# cosa c'è di meglio: elenchi di inizializzazione o assegnazione?
- 29. Quanto è costoso Thread.getStackTrace()?
- 30. Passaggio per riferimento più costoso del passaggio per valore
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
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. –
mentre la risposta fornita è pratica, evita completamente la domanda: | – Darioush