Estoy haciendo problemas de práctica de MCTS Examen 70-536 Microsft .Net Framework Aplicación Dev Foundation, y uno de los problemas es crear dos clases, una genérica, un tipo de objeto que ambos realizan lo mismo ; en el que un ciclo usa la clase e itera más de mil veces. Y usando el temporizador, mide el tiempo de ambos. Hubo otra publicación en C# generics question que busca la misma pregunta pero nadie contestó.Genéricos vs Objeto de rendimiento
Básicamente, si en mi código ejecuto la clase genérica primero, se necesita procesar. Si ejecuto la clase de objeto primero, la clase de objeto tarda más en procesarse. La idea era probar que los genéricos funcionan más rápido.
Utilicé el código de usuario original para ahorrar algo de tiempo. En particular, no vi nada malo con el código y me sorprendió el resultado. ¿Puede alguien explicar por qué los resultados inusuales?
Gracias,
Risho
Aquí está el código:
class Program
{
class Object_Sample
{
public Object_Sample()
{
Console.WriteLine("Object_Sample Class");
}
public long getTicks()
{
return DateTime.Now.Ticks;
}
public void display(Object a)
{
Console.WriteLine("{0}", a);
}
}
class Generics_Samle<T>
{
public Generics_Samle()
{
Console.WriteLine("Generics_Sample Class");
}
public long getTicks()
{
return DateTime.Now.Ticks;
}
public void display(T a)
{
Console.WriteLine("{0}", a);
}
}
static void Main(string[] args)
{
long ticks_initial, ticks_final, diff_generics, diff_object;
Object_Sample OS = new Object_Sample();
Generics_Samle<int> GS = new Generics_Samle<int>();
//Generic Sample
ticks_initial = 0;
ticks_final = 0;
ticks_initial = GS.getTicks();
for (int i = 0; i < 50000; i++)
{
GS.display(i);
}
ticks_final = GS.getTicks();
diff_generics = ticks_final - ticks_initial;
//Object Sample
ticks_initial = 0;
ticks_final = 0;
ticks_initial = OS.getTicks();
for (int j = 0; j < 50000; j++)
{
OS.display(j);
}
ticks_final = OS.getTicks();
diff_object = ticks_final - ticks_initial;
Console.WriteLine("\nPerformance of Generics {0}", diff_generics);
Console.WriteLine("Performance of Object {0}", diff_object);
Console.ReadKey();
}
}
Debe aceptar las respuestas a sus preguntas. – SLaks
Deberías usar la clase 'Cronómetro'. – SLaks
Debe hacer clic en la marca vacía al lado de la mejor respuesta dada para cada una de sus preguntas para aceptar esa respuesta. – SLaks