关于if和?的速度比较:

时间:2016-05-05 11:29:29

标签: c# windows-applications

出于测试目的,我写了一个简单的代码。第一种方法更适合编码标准。第二种方法是传统方式。我用秒表来比较,我尝试了一切,但无法弄清楚为什么方法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更好?感谢。

编辑:

更改为此但仍然更快。

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

我认为这不是比较计数。

1 个答案:

答案 0 :(得分:0)

在Method1中,您正在进行字符串比较以检查控件的状态。

在Method2中,您正在进行布尔比较。

后者会更快。