C# 运行程序所花费的时间

C# 运行程序所花费的时间,c#,performance,time,C#,Performance,Time,如何在程序运行时在文本框或输出中打印 我希望它显示在for循环中,以获得每个for循环需要多少时间。类似这样的内容: var watch = System.Diagnostics.Stopwatch.StartNew(); for() { // .. } watch.Stop(); // Format 00:00:02.0001008 string elapsed = watch.Elapsed.ToString(); // Milliseconds like 2000 fo

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

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

类似这样的内容:

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);
DateTime start = DateTime.UtcNow;

//... processing ...

DateTime end = DateTime.UtcNow;

Syste.Diagnostics.Debug.WriteLine((end - start).ToString());
你可以试试:

DateTime dt = DateTime.Now;
for (.......)
{
}
TimeSpan ts = DateTime.Now - dt;
textbox1.Text = ts.TotalMilliseconds.ToString();
或者(根据)如果你需要更好的解决方案

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

您可以在应用程序启动时存储当前日期时间,然后创建每秒触发的计时器。当它触发时,你得到当前日期时间,减去它们得到时间跨度,并用它填充文本框。

在For循环之间或要测试函数速度的代码之间添加这两行

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

  --your code

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

看看这篇文章:好吧,你设置计时器,运行程序,停止计时器,然后在文本框中输入时间。容易的!更严重的是,请尝试使用
.Subtract()
文档特别建议不要将DateTime类用于基准测试目的。@R0MANARMY:是的,您是对的。我编辑了我的文章,包括两种解决方案。谢谢,您可以直接使用秒表。延时百万秒,省去中间时间间隔conversions@Marco:是的,但您也跳过了一些字符串格式的代码。它们使用TimeSpan来输出格式化的日期时间,而不仅仅是毫秒,第二个输出毫秒的MSDN示例不使用TimeSpan,这不只是计算秒数吗?您每秒钟更新一次输入框,不测量时间跨度。这将不准确,因为您不仅要测量代码执行所需的时间,还要测量将日期时间转换为字符串并运行代码所需的时间。当然,如果代码以分钟为单位运行,那么几毫秒是无关紧要的,但如果运行时间更短,它可能会有所不同。@Romanarmy,你是对的,如果它是一个时间关键的核项目。。正如您所知,我们每天开发的大多数项目都是核心Web应用程序。不,但我们都编写了在紧密循环中执行的代码,而降低效率意味着用户体验不佳,因为用户每次单击按钮时,UI都会锁定一秒钟。文档特别建议不要使用DateTime类进行基准测试。当然,我知道有更好的计时器,如果您想看到秒或分钟,这很好…)+1给你,因为你的答案是第一个,而且是正确的!!