2016-05-05 6 views
0

私は簡単なコードを書いています。最初の方法は、標準のコーディングに適しています。 2番目の方法は伝統的な方法です。私は比較のためにストップウォッチを使用しています。私はすべてを試しましたが、方法2(伝統的)が方法1より速い理由を理解できませんでしたか? ?:演算子より高速ですか?ifと?のスピード比較:

私のフォームデザイン。 Form Design

マイコード;

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"; 
      } 
     } 

これは比較カウントではないと思います。

+0

最初のメソッドには2つのif文があります。 2番目の方法は1つしかありません。これは公正な比較であると思われますか? – yaakov

+0

プライベートvoid Method2() { if(pictureBox.Visible) { pictureBox.Visible = false; button1.Text = button1.Text == "閉じる"? "開閉"; } else { pictureBox.Visible = true; button1.Text = button1.Text == "閉じる"? "開閉"; } } 私はこれに変更します。まだMethod2は高速です。 – Dicaste

+1

親指のルール:どちらが速いのかを尋ねる必要がある場合、それは重要ではありません。あなたが減速に気づくまで、スピードを心配しないでください。 – buffjape

答えて

0

メソッド1では、文字列比較を行ってコントロールの状態を確認しています。

Method2では、ブール比較を行います。

後者はすばやくなります。

+0

Method2は 'boolean'の比較です –

+0

@DavidPine - うわー - ' Visible'はブール値ではなくenumですが、ロジックはまだ成り立つWPF/Silverlightでの作業に慣れていました。 – ChrisF

関連する問題