Je fais des problèmes de pratique à partir de MCTS Exam 70-536 Microsft Application .Net Framework Dev Foundation, et l'un des problèmes est de créer deux classes, un générique, un type d'objet qui effectuent la même chose ; dans lequel une boucle utilise la classe et itérée plus de mille fois. Et en utilisant la minuterie, chronométrer la performance des deux. Il y avait un autre poste à C# generics question qui cherche la même quête mais personne ne répond.Generics vs Performance de l'objet
Fondamentalement, si dans mon code, je lance d'abord la classe générique, il faut que le logeur soit traité. Si je cours la classe d'objet d'abord que la classe d'objet prend plus de temps à traiter. L'idée était de prouver que les génériques fonctionnent plus vite. J'ai utilisé le code des utilisateurs d'origine pour gagner du temps. Je n'ai pas particulièrement vu quelque chose de mal avec le code et a été intrigué par le résultat. Quelqu'un peut-il expliquer pourquoi les résultats inhabituels?
Merci,
Risho
Voici le code:
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();
}
}
Vous devriez accepter les réponses à vos questions. – SLaks
Vous devriez utiliser la classe 'Stopwatch'. – SLaks
Vous devez cliquer sur la coche vide à côté de la meilleure réponse donnée pour chacune de vos questions afin d'accepter cette réponse. – SLaks