Ottimizzazione: quanto tempo risparmiato è considerato degno? [chiuso]

0

Stavo leggendo le previsioni sulle filiali e le mancate cache e ho deciso di leggere what every programmer should know about memory . Ma non sono sicuro di quanta conoscenza di basso livello debba avere per scrivere codice performante.

Un classico esempio è l'accesso alla memoria nel modo sbagliato, accedendo colonna per colonna quando è maggiore di riga causerebbe un errore di cache in ogni ricerca.

Ho eseguito un benchmark di 10.000 per 10.000 matrici e l'ordine corretto viene eseguito in 97 ms mentre l'ordine errato viene eseguito in 1535 ms.

Mentre è evidente che l'accesso alla memoria nel giusto ordine è molto più veloce, ma da quanto? In questo esempio, è solo più veloce di 1,44 secondi. Quindi un programma scritto da un programmatore senza tale conoscenza della memoria è probabilmente penalizzato solo fino a pochi secondi.

Ho 2 domande.

  • Quante conoscenze di basso livello deve avere un programmatore competente?
  • Quanto tempo risparmiato con l'ottimizzazione è considerato utile? Almeno un minuto rasato? Mezzo minuto? O qualsiasi quantità di tempo risparmiato?

Alcune persone pensano che non valga la pena di ottimizzare solo per risparmiare qualche secondo o addirittura millisecondo. Ma cosa ne pensate?

    
posta Lee Yik Jiun 23.11.2015 - 11:56
fonte

1 risposta

2

Non è solo una questione di quanto è lungo un pezzo di corda, ma a cosa serve quella stringa.

Certo, trascorrere un mese per ottimizzare un secondo del tempo di esecuzione del codice è probabilmente senza valore. Potresti aver trovato un codice più lento che è stato più facile da ottimizzare o aggiungere più funzionalità. Ma a volte sai che qualcosa è lento e devi modificarlo per renderlo più veloce e devi sperimentare un po 'per raggiungere questo obiettivo, ad esempio un collega che anni fa ha impiegato diversi mesi a implementare un meccanismo di memorizzazione nella cache del nostro prodotto (che era troppo lento al tempo). Ha aggiunto un aumento del 10% alla velocità generale. Poi abbiamo scoperto che il setup MS_DTS che stavamo usando era incredibilmente inefficiente, lo ha cambiato in DCOM e ha ottenuto un aumento della velocità del 100%. Quel che era certo era che il nostro prodotto era troppo lento e dovevamo passare molto tempo a renderlo più veloce in ogni modo.

L'altro aspetto è la quantità di tempo che viene risparmiata in modo cumulativo - la rasatura di una frazione di secondo di una query può sembrare inutile, ma se tale query viene utilizzata ripetutamente e spesso da ogni utente, tali frazioni andranno a sommarsi in modo equo utile miglioramento delle prestazioni del server.

Quindi è difficile rispondere alla tua domanda senza conoscere le tue circostanze specifiche. Hai solo bisogno di scambiare l'impatto sulle prestazioni con il costo dello sviluppo. Può essere utile dare un "costo per l'utente" per rendere più facile il calcolo di questo trade - risparmiando un secondo su quanto tempo impiega il menu di avvio per mostrare potrebbe non sembrare molto, ma se hai un miliardo di utenti potrebbe valerne la pena.

    
risposta data 23.11.2015 - 12:12
fonte

Leggi altre domande sui tag