私はMCTS試験70-536 Microsft .Net Framework Application Dev Foundationの練習問題を抱えています。問題の1つは、同じものを実行する汎用クラスとオブジェクトタイプの2つのクラスを作成することです;ループがそのクラスを使用し、何千回も反復したものです。そして、タイマーを使用して、両方のパフォーマンスに時間をかけてください。 C# generics questionに同じクエストを求めるが、未回答の投稿がありました。ジェネリックスとオブジェクトのパフォーマンス
私のコードでは、まずジェネリッククラスを実行すると、処理にロガーがかかります。オブジェクトクラスを最初に実行すると、処理に時間がかかります。全体のアイデアは、ジェネリックスがより速く実行されることを証明することでした。
私はしばらく時間を節約するために元のユーザーコードを使用しました。私は特にコードに何か間違っているとは思わなかったし、結果に困惑した。なぜそのような結果が得られたのかを説明できるのでしょうか?ここで
おかげで、
Risho
はコードです:
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();
}
}
あなたの質問に対する回答を受け入れる必要があります。 – SLaks
'Stopwatch'クラスを使うべきです。 – SLaks
その答えを受け入れるためにあなたの質問ごとに与えられた最良の答えの横にある中空のチェックをクリックする必要があります。 – SLaks