2010-02-23 23 views
7

Per favore qualcuno può indicarmi un buon tutorial che mi aiuti a rendere il mio codice veloce e leggero. Sono interessato a sapere quale metodo è più veloce e quando utilizzare un metodo invece di altri ...
E come valutare se un codice è buono o cattivo?
Il mio linguaggio di programmazione è C#.Come rendere veloce il mio codice

Ciao a tutti,
Grazie per le vostre risposte, sono molto utili.
Sto modificando la mia domanda per essere più specifica specialmente che l'ottimizzazione è illimitata.
Voglio sapere qual è il metodo migliore in ogni condizione.
Ad esempio, utilizzare StringBuilder è meglio della stringa se sto aggiungendo le righe a una stringa ... Ho solo bisogno di queste cose semplici.

+1

Probabilmente devi essere più specifico. La risposta generica è: fai quanto devi, ma non di più. –

+0

StringBuilder non garantisce un aumento delle prestazioni quando si concatenano piccoli (<5) numeri di stringhe - http://dotnetperls.com/stringbuilder-performance –

risposta

18

essere a conoscenza di ottimizzazione dei sub.

Anche se una funzione specifica è più veloce di un'altra, questo non farà necessariamente alcuna differenza nel runtime dell'applicazione. Devi capire quali parti del tuo codice sono effettivamente un potenziale problema e concentrarti sull'ottimizzazione di queste parti. Essere consapevoli dello O notation delle proprie funzioni e della frequenza con cui vengono chiamate. Per identificare le parti che necessitano di ottimizzazione, un profiler può essere di aiuto.

This question ha alcuni punti interessanti sul motivo per cui non si dovrebbe ottimizzare finché non vi è effettivamente la necessità di farlo.

+0

Il collegamento alle domande è stato eliminato lol :( – puretppc

2

Se un metodo era sempre più veloce di un altro, non si preoccuperebbero di includerne uno più lento.

L'unico invariante quando si tratta di prestazioni è che è necessario il profilo. Tutto segue da quello.

+0

Non vero. Guarda tutti i modi in cui puoi creare file i/o in C#, ad esempio. I vecchi metodi si aggirano per la compatibilità con le versioni precedenti e ci sono vari livelli di astrazione a seconda del livello di basso o alto livello che si desidera raggiungere. – RedFilter

4

Tipo VERAMENTE veloce.

+8

Vorrei aggiungere: (1) rimuovere tutti i commenti (2) abbreviare le variabili ad una singola lettera (3) rimuovere gli spazi bianchi non necessari, compresi i newline (4) riutilizzare le variabili per scopi diversi ... ;-) –

+2

e vorrei aggiungere ... se non si digita velocemente .. utilizzare un software di sintesi vocale: P non riesco a immaginare un programmatore che utilizza un software di sintesi vocale per codificare ... – scatman

5

Fondamentalmente attuare prima, quindi verificare dove ottimizzare.

Se si utilizza Visual Studio Profissional, è possibile utilizzare Analizza -> Avvia Performance Wizard per analizzare le prestazioni del metodo. Non sono sicuro che le altre versioni supportino questa funzione, tuttavia, ci sono anche alcune applicazioni commerciali/gratuite in giro ... cerca un profiler (vedi here per un elenco).

1

In termini di consigli generali:

  • tenta di utilizzare il minor numero di cicli necessari
  • Sposta codice di loop dove possibile
  • cose evitare di copiare (come stringhe) in loop
  • evitare di creare oggetti in loop
  • Cache dove giustificata (generalmente oggetti di piccole dimensioni che impiegano molto tempo a fare), ma assicurarsi che la cache abbia una buona politica di smaltimento o si trasformi in una perdita di memoria
2

Se ti procuri un profiler, ti sarà d'aiuto, alcuni ti daranno anche ottimi consigli.

Esempio: ANTS Profiler

Di solito si trovano che la riduzione del numero di volte che si creano stringhe di essere il principale incremento delle prestazioni si può ottenere.

quello e non scherzi con il Garbage Collector manualmente (a meno che davvero sa cosa si sta facendo)

Questo collegamento per Java design patterns è troppo coinvolto, non troppo scoraggiare dalla parola Java lì , puoi usare ciò che insegnano per lo sviluppo in qualsiasi lingua.

Il fatto è che se vuoi sapere quando fare cosa e quali metodi usare e così via, i modelli di progettazione sono ciò di cui stai parlando.

Vorrei che qualcuno me lo avesse segnalato prima nella mia carriera.

+0

+1 per ANTS Profiler –

3

È possibile avere un sacco di consigli su questo. Ma attenzione: L'ottimizzazione prematura è la radice di tutto il male.

1

È possibile compilare il programma in modalità nativa per migliorare le prestazioni di runtime.

0

Uno dei modi per capirlo da soli è disporre di un'app per console in cui si tenta di eseguire pezzi di codice separati l'uno contro l'altro e di cronometrarli. Come here.

3

Scopo prima per correttezza, successiva per chiarezza e solo allora prestazioni.

Come dice un vecchio proverbio,

"A nessuno importa quanto velocemente si può calcolare la risposta sbagliata"

(sul piano pratico, però, utilizzare un profiler)

+0

Ma questo non aiuta QA a trovare i bug più velocemente? :) – RedFilter

7

Certo. Ecco cosa facciamo:

  • Iniziare il viaggio decidendo quando il viaggio è finito. Stabilire obiettivi prestazionali significativi, incentrati sul cliente e realistici. (Per velocità e consumo di risorse.)

  • Verificare attentamente il codice frequentemente per verificare se si soddisfano i propri obiettivi di prestazione.

  • Se si soddisfano gli obiettivi prestazionali, non preoccuparsi delle prestazioni. Le cose vanno bene Preoccupati per bug, robustezza o funzionalità.

  • Se non si soddisfano gli obiettivi prestazionali, eseguire un profiler. Usalo per identificare qual è il peggior codice offendente. Ha senso solo correggere il codice peggiore; fare qualcosa che è già incredibilmente veloce e leggero leggermente più veloce e leggero non risolve il tuo problema di prestazioni.

  • Riscrivere il codice lento in modo che sia più performante. (Questo è il duro). Assicurati di testarlo per assicurarti che sia davvero meglio.

  • Se nonostante i tuoi sforzi non riesci a renderlo abbastanza buono, rivaluta i tuoi obiettivi o annulla il progetto e trascorri il tuo tempo in qualcosa in cui puoi avere successo.

Continua a ripetere fino a quando non spedisci qualcosa.

Problemi correlati