Le eccezioni vanno usate in casi eccezionali!

Linguaggio C#: eccezioni

Premessa
  • Ho effettuato le prove con Visual Studio 2005 .NET

  • Compilato un programma con opzione "Realise" (senza informazioni di debug).

I° Benchmark:  ciclo senza nessun errore da rilevare

Pos

Ripetizioni

Tempo Condizioni Tempo Eccezioni Cond / Eccez
1 10.000.000 125 45 2,78
2 100.000.000 1.220 420 2,90
3 1.000.000.000 12.155 4.280 2,84
4 2.000.000.000 24.435 8.560 2,85

Tempo espresso in millisecondi.

II° Benchmark:  un errore per ogni ripetizione del ciclo

Pos

Ripetizioni

Tempo Condizioni Tempo Eccezioni Eccez / Cond
1 1.000 0 80  
2 10.000 0 830  
3 100.000 1 8.300 8.300
4 200.000 2 16.900 8.450
5 1.000.000 12 83.200 6.933

Tempo espresso in millisecondi.

Conclusioni

Risultati:

  1. Se non ci sono errori da rilevare, le eccezioni risultano quasi tre volte più veloci (2,8);

  2. Se gli errori da rilevare sono  la maggior parte dei casi, la gestione delle eccezioni risulta essere circa ottomila volte più lenta!

Facciamoci la seguente domanda:

Conviene utilizzare la gestione delle eccezioni oppure conviene controllare il valore di ritorno di un metodo?

  • Se si deve controllare la possibile condizioni di errore di una funzione che impiega pochi cicli di clock e che non è in profondità in delle chiamate nidificate, conviene controllare il valore di ritorno del metodo. All'interno del metodo conviene inserire delle condizioni (if) che controllano la validità dei dati.

  • Nel caso in cui, l'errore dipenda da un qualcosa difficilmente controllabile e che non è inserito in un ciclo che viene ripetuto un numero elevato di volte, conviene utilizzare le eccezioni, sia per la chiarezza che per l'affidabilità

Print | posted @ lunedì 15 gennaio 2007 02:41

Comments have been closed on this topic.