私の先生は、可能な限り最も効率的な方法でプログラムを作成し、そのためにスイッチケースを使用するように私たちに依頼しました。
プログラムはユーザーに入力を求めます。ユーザーが入力した内容に応じて、プログラムは一連の指示に従う必要があります。
入力が「A」または「a」の場合、配列はAからZにソートする必要があります。
入力が「Z」または「z」の場合、配列はZからAにソートする必要があります。
入力が「R」または「r」の場合、配列を逆にする必要があります。
配列はstring []です。
だから私はそれを使用する方が効率的かどうか疑問に思っています
switch (choice.ToLower())
{
case "a":
Array.Sort(array);
break;
case "z":
Array.Sort(array);
Array.Reverse(array);
break;
case "r":
Array.Reverse(array);
break;
}
または
if (choice.ToLower() == "a" || choice.ToLower() == "z")
{
Array.Sort(array);
}
if (choice.ToLower() == "r" || choice.ToLower() == "z")
{
Array.Reverse(array);
}
また、このコードをさらに最適化できるかどうか。
それで、スイッチケースを使用する最も効率的な方法、または上記のif構造で、その理由を説明しますか?
私は常にすべてのコードを最大限に最適化しようとしているので、興味があります。
さて、あなたは自分でそれをチェックすることができます:
class Program
{
static void MyMethod1(int[] array, string choice)
{
switch (choice.ToLower())
{
case "a":
Array.Sort(array);
break;
case "z":
Array.Sort(array);
Array.Reverse(array);
break;
case "r":
Array.Reverse(array);
break;
}
}
static void MyMethod2(int[] array, string choice)
{
if (choice.ToLower() == "a" || choice.ToLower() == "z")
{
Array.Sort(array);
}
if (choice.ToLower() == "r" || choice.ToLower() == "z")
{
Array.Reverse(array);
}
}
static int[][] CreateRandomArrays(int num, int length)
{
Random rand = new Random();
int[][] arrays = new int[num][];
for (int i = 0; i < arrays.Length; i++)
{
arrays[i] = new int[length];
for (int i2 = 0; i2 < length; i2++)
arrays[i][i2] = rand.Next();
}
return arrays;
}
static void Main(string[] args)
{
int[][] test1 = CreateRandomArrays(50, 200000);
int[][] test2 = CreateRandomArrays(50, 200000);
Stopwatch s = new Stopwatch();
s.Start();
for (int i = 0; i < test1.Length; i++) MyMethod1(test1[i], "z");
s.Stop();
Console.WriteLine(s.ElapsedMilliseconds);
s.Restart();
for (int i = 0; i < test2.Length; i++) MyMethod2(test2[i], "z");
s.Stop();
Console.WriteLine(s.ElapsedMilliseconds);
}
}
ご覧のとおり、結果はほぼ同じです。
1010 ms vs 1008 ms
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加