Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created July 7, 2014 22:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Fhernd/d976963a3efe2dad1ad6 to your computer and use it in GitHub Desktop.
Save Fhernd/d976963a3efe2dad1ad6 to your computer and use it in GitHub Desktop.
Demostración de la ganancia de desempeño con el uso de métodos que implementan el patrón TryXXX frente al uso de excepciones.
using System;
using System.Collections.Generic;
using System.Diagnostics;
namespace Articulos.Cap04.Excepciones.Parte2
{
public sealed class TryXxxVsExcepciones
{
public static void Main()
{
// Creación del diccionario:
Dictionary<string, string> abrirCon = new Dictionary<string, string>();
// Agregación de extensiones:
abrirCon.Add (".html", "Internet Explorer");
abrirCon.Add (".cs", "Notepad++ Portable (PortableApps Launcher)");
abrirCon.Add (".mp3", "Winamp");
abrirCon.Add (".camrec", "Camtasia Studio");
abrirCon.Add (".jpg", "Pain.NET");
// Uso del patrón TryXXX:
Console.WriteLine ("\nUso del patrón TryXXX:");
string aplicacion = String.Empty;
Stopwatch cronometro = new Stopwatch();
cronometro.Start();
for (int i = 1; i <= 1000; ++i)
{
abrirCon.TryGetValue (".tif", out aplicacion);
}
cronometro.Stop();
// Muestra los resultados de las ejecuciones del método TryGetValue:
Console.WriteLine ("\tTiempo transcurrido: {0}ms", cronometro.Elapsed.TotalMilliseconds.ToString());
// Uso del modo de acceso basado en indizador ('indexer').
// Este modo genera una excepción si la aplicación a la
// extensión pasada como índice no existe:
Console.WriteLine ("\nUso del modo de acceso basado en indizador:");
cronometro.Reset();
cronometro.Start();
for (int i = 1; i <= 1000; ++i)
{
try
{
aplicacion = abrirCon[".tif"];
}
catch (KeyNotFoundException)
{
// Captura de la excepción.
}
}
cronometro.Stop();
// Muestra los resultados de las ejecuciones en excepciones:
Console.WriteLine ("\tTiempo transcurrido: {0}ms\n", cronometro.Elapsed.TotalMilliseconds.ToString());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment