繁体   English   中英

如何使用计时器查看 C# 中的等式需要多长时间

[英]How to use a timer to see how long an equation takes in C#

在我的程序中,我试图查看计算一定数量的素数需要多长时间

double time;
        private void button1_Click(object sender, EventArgs e)
        {
            
            bool isPrime = true;
            timer1.Start();
            for (int i = 2; i <= 200000; i++)
            {
                for (int j = 2; j <= 200000; j++)
                {
                    if (i != j && i % j == 0)
                    {
                        isPrime = false;
                        break;
                    }
                }
                if (isPrime)
                {
                    //listBox1.Items.Add(i);
                }
                isPrime = true;
            }
            timer1.Stop();
            MessageBox.Show(time.ToString() + "ms");
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            time += 0.001; ;
        }

但是,当程序完成计算时,消息框将时间显示为零。 我使用秒表类测试了该程序并且该程序有效,但是我想知道有没有办法改用计时器?

谢谢!

如果这纯粹是学术性的:

myTimer.Interval = 1;
myTimer.Elapsed += IncrementEvent;

您可以执行上述操作以在每个增量上触发一个事件。

导致事件每~1ms 触发一次。

public int incrementCounter {get; set; }
public void IncrementEvent()
{
    incrementCounter++;
}

我也相信您需要将其连接起来以进行多线程处理。 (我不记得我上次使用计时器是什么时候,而且从来没有在一个需要考虑锁定的紧密循环中。

然后显然在您的消息框中使用该值:

MessageBox.Show(incrementCounter.ToString() + "ms");

但是,我认为永远不要在生产中使用这样的东西。

  • 你没有太多的精确度。 1ms 是最小的时间单位。
  • 计时器不是很可靠。 即使每隔几秒钟运行一次,您也会看到执行时间的毫秒数略有不同。
  • 计时器旨在安排事件在 t(ime) 过去后发生。 有很多更好的工具可以用来衡量一个事件需要多长时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM