Prestazioni relative alle prestazioni nei linguaggi orientati agli oggetti [duplicato]

1

Recentemente sono passato allo sviluppo web usando ASP.NET MVC. La lingua che uso è C #. Avere una notevole esperienza in C mi fa cercare degli standard di codifica ottimizzati (memoria, strutture dati efficienti e velocità dei loop per nominarne alcuni).

Ma i miei colleghi che hanno anni di esperienza in questo settore non sembrano tener conto di tutti questi aspetti. Quindi la mia domanda è: il codice deve essere ottimizzato quando si lavora con linguaggi come i server su cui verranno installate queste applicazioni ha un'enorme velocità di elaborazione e memoria? O li sta ignorando come cattiva pratica?

    
posta gvk 27.09.2015 - 05:25
fonte

2 risposte

6

La cultura della programmazione è cambiata considerevolmente dai tempi in cui C era il linguaggio scelto e l'hardware era così insignificante che C era effettivamente una necessità.

Fortunatamente, non dobbiamo preoccuparci troppo dell'ottimizzazione al giorno d'oggi. La regola generale è di mai ottimizzare a meno che tu non abbia una buona ragione per farlo. E per avere una buona ragione, devi:

  1. Avere un requisito prestazionale per il tuo prodotto, qualcosa come "il tempo di risposta del server deve essere inferiore a 200 millisecondi". (Requisiti vaghi come "il più velocemente possibile" sono generalmente disapprovati).

  2. Misura l'effettivo tempo di risposta del tuo server e effettivamente testimone che non soddisfa il requisito.

  3. esaurisci tutte le opzioni per soddisfare il requisito riconfigurando il tuo sistema per farlo funzionare in modo più ottimale. (Sareste sorpresi: alcune persone non conoscono la differenza tra l'esecuzione di un server Web in modalità di debug e in modalità di produzione.)

  4. esaurisci tutte le opzioni per soddisfare il requisito acquistando hardware migliore e / o altro hardware . Al giorno d'oggi l'hardware in genere costa molto meno degli stipendi degli sviluppatori.

  5. Getta il profiler sul tuo sistema e stabilisci che il collo di bottiglia è in realtà nel codice di cui sei responsabile e hai il potere di cambiare.

  6. esaurisci tutte le opzioni per ottimizzazioni algoritmiche . (Introduzione di un livello di memorizzazione nella cache da qualche parte; codice di ristrutturazione in modo che qualcosa accada in modo asincrono piuttosto che in modo sincrono ; ecc.)

Quindi, e solo allora, è consigliabile tentare la fortuna modificando il codice per farlo funzionare in modo più ottimale. E come puoi immaginare, non raggiungiamo quasi mai questo stadio.

    
risposta data 27.09.2015 - 10:57
fonte
3

Nella maggior parte dello sviluppo di applicazioni aziendali l'attenzione è rivolta a fornire funzionalità e codice di scrittura il più possibile pulite e manutenibili al fine di evitare bug e facilitare la reazione ai cambiamenti aziendali e fornire nuove funzionalità in futuro. Le ottimizzazioni delle prestazioni di solito hanno un costo in termini di tempo di sviluppo e in codice più complesso, che è quindi più difficile da modificare in seguito. Pertanto le ottimizzazioni possono essere controproducenti.

La solita regola empirica consiste nell'ottimizzare solo se esiste un problema prestazionale osservabile, piuttosto che ottimizzare "di default" come è più comune nello sviluppo di sistemi.

    
risposta data 27.09.2015 - 10:52
fonte