私は簡単なコードを書いています。最初の方法は、標準のコーディングに適しています。 2番目の方法は伝統的な方法です。私は比較のためにストップウォッチを使用しています。私はすべてを試しましたが、方法2(伝統的)が方法1より速い理由を理解できませんでしたか? ?:演算子より高速ですか?ifと?のスピード比較:
マイコード;
namespace WindowsFormsApplication3
{
using System;
using System.Diagnostics;
using System.Windows.Forms;
internal partial class Form1 : Form
{
private void Button1Click(object sender, EventArgs e)
{
var sw = new Stopwatch();
sw.Start();
Method1();
sw.Stop();
listBox1.Items.Add($"Method1 -> {sw.Elapsed}");
sw.Reset();
sw.Start();
Method2();
sw.Stop();
listBox1.Items.Add($"Method2 -> {sw.Elapsed}");
}
private void Method1()
{
pictureBox.Visible = !pictureBox.Visible;
button1.Text = this.button1.Text == "Close" ? "Open" : "Close";
}
private void Method2()
{
if (pictureBox.Visible)
{
pictureBox.Visible = false;
button1.Text = "Open";
}
else
{
pictureBox.Visible = true;
button1.Text = "Close";
}
}
}
}
誰かがMethod2(伝統的)がMethod1よりも優れている理由を説明できますか?ありがとう。
編集:
変更されていますが、それでも方法1は高速です。
private void Method2()
{
if (pictureBox.Visible)
{
pictureBox.Visible = false;
if (this.button1.Text == "Close")
{
this.button1.Text = "Open";
}
else
{
this.button1.Text = "Close";
}
}
else
{
pictureBox.Visible = true;
if (this.button1.Text == "Close")
{
this.button1.Text = "Open";
}
else
{
this.button1.Text = "Close";
}
}
これは比較カウントではないと思います。
最初のメソッドには2つのif文があります。 2番目の方法は1つしかありません。これは公正な比較であると思われますか? – yaakov
プライベートvoid Method2() { if(pictureBox.Visible) { pictureBox.Visible = false; button1.Text = button1.Text == "閉じる"? "開閉"; } else { pictureBox.Visible = true; button1.Text = button1.Text == "閉じる"? "開閉"; } } 私はこれに変更します。まだMethod2は高速です。 – Dicaste
親指のルール:どちらが速いのかを尋ねる必要がある場合、それは重要ではありません。あなたが減速に気づくまで、スピードを心配しないでください。 – buffjape