【问题标题】:Time spend running program花时间运行程序
【发布时间】:2011-12-11 19:09:59
【问题描述】:

如何在文本框或输出中打印程序运行的时间?

我希望它显示在一个 for 循环中,以获取每个 for 循环需要多少时间。

【问题讨论】:

标签: c# performance time


【解决方案1】:

你可以试试:

DateTime dt = DateTime.Now;
for (.......)
{
}
TimeSpan ts = DateTime.Now - dt;
textbox1.Text = ts.TotalMilliseconds.ToString();

或者(根据MSDN)如果您需要更好的分辨率

Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
for (.......)
{
}
stopWatch.Stop();
textbox1.Text = stopWatch.ElapsedMilliseconds.ToString();

【讨论】:

  • MSDN 文档特别建议反对使用 DateTime 类进行基准测试。
  • @R0MANARMY:是的,你是对的。我编辑了我的帖子,包括两种解决方案。谢谢
  • 可以直接使用stopWatch.ElapsedMilliseconds,去掉中间的TimeSpan转换
  • @Marco :是的,但您也跳过了一些用于字符串格式化的代码。它们是使用 TimeSpan 来输出格式化的日期时间,不仅是毫秒,第二个输出毫秒的 MSDN 示例不使用 TimeSpan
【解决方案2】:
var watch = System.Diagnostics.Stopwatch.StartNew();

for()
{
 // ..
}

watch.Stop();

// Format 00:00:02.0001008
string elapsed = watch.Elapsed.ToString();     

// Milliseconds like 2000 for 2 seconds
string elapsedMs = watch.ElapsedMilliseconds.ToString(); 

System.Diagnostics.Debug.WriteLine(elapsed);

【讨论】:

  • 为你+1,因为你的答案是第一个而且是正确的!!
【解决方案3】:

添加这两行 - 在您的 For 循环之间或在您要测试功能速度的代码之间。

 Debug.WriteLine(DateTime.Now.ToLongTimeString());

  --your code

 Debug.WriteLine(DateTime.Now.ToLongTimeString());

【讨论】:

  • 这将不准确,因为您不仅要测量代码执行所需的时间,还要测量将 DateTime 转换为字符串 + 运行代码所需的时间。当然,如果代码在几分钟内运行,几毫秒将是微不足道的,但对于更短的运行可能会有所作为。
  • @Romanarmy ,如果它是时间紧迫的核项目,你是对的。正如你所知,我们每天开发的大多数项目都是核 Web 应用程序。
  • 不,但是我们都编写了在紧密循环中执行的代码,降低效率意味着糟糕的用户体验,因为用户每次单击按钮时 UI 都会锁定一秒钟。
【解决方案4】:

您可以在应用程序启动时存储当前的 DateTime,然后创建一个每秒触发一次的计时器。当它触发时,您将获得当前的 DateTime,减去它们以获得 TimeSpan 并使用它来填充您的文本框。

【讨论】:

  • 那不只计算秒数吗?
  • 你每秒更新输入框,而不是测量时间跨度。
【解决方案5】:

类似这样的:?

DateTime start = DateTime.UtcNow;

//... processing ...

DateTime end = DateTime.UtcNow;

Syste.Diagnostics.Debug.WriteLine((end - start).ToString());

【讨论】:

  • MSDN 文档特别建议反对使用 DateTime 类进行基准测试。
  • 当然我知道有更好的计时器,如果您想查看秒或分钟,这很好...... :)
猜你喜欢
  • 2013-08-05
  • 2019-03-12
  • 1970-01-01
  • 2021-09-21
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多