【问题标题】:Calculate code run time/speed计算代码运行时间/速度
【发布时间】:2014-05-22 19:33:03
【问题描述】:

我对 ms visual studio 中代码的运行时间/速度非常好奇。

例如,

1.代码:

byte[] buffer = new byte[4096];
var p = System.IO.Directory.GetFiles(directoryName);

2。代码

var entry = new ZipEntry(Path.GetFileName(file));
entry.DateTime = DateTime.Now;

如果我运行 1. 代码,我想查看“它的运行时间/速度 0.03 秒”

如果我运行 2. 代码,我想查看“它的运行时间/速度 0.06 秒”

在不使用 timer 的情况下,有什么可以计算 c# 中代码的运行时间/速度吗?

我们将不胜感激。

谢谢。

【问题讨论】:

  • 您是否使用byte[] 示例来分析CLR 的分配速度? ……这有什么用? ...另外,看看Stopwatch。
  • 如果我调试行,我想计算运行时间/调试持续时间的速度等。
  • 这只是为了调试/分析吗? Visual Studio 有一个非常方便的性能分析工具..

标签: c# performance time


【解决方案1】:

用于快速分析代码的最佳方法是 Stopwatch in System.Diagonstics

var sw = Stopwatch.StartNew();

///.... stuff

sw.Stop();

sw.ElapsedMilliseconds;

如果这是您可能想在生产中使用的东西,我建议:http://miniprofiler.com/

【讨论】:

  • Winforms c# 中没有“秒表”这样的东西吗?如果我写秒表,秒表没有 dll 为什么我不能使用它?
  • 您必须添加对 System.Diagostics 的引用
  • 它的 Stopwatch 不是 StopWatch
  • @DaveBish 没有可引用的 System.Diagnostics 库,System.Diagnostics 只是核心库 (System.dll) 的命名空间部分。
【解决方案2】:

您可以使用Stopwatch 进行基准测试代码

var sw = Stopwatch.StartNew();
var entry = new ZipEntry(Path.GetFileName(file));
sw.Stop();
Console.WriteLine("Time to zip: {0}", sw.Elapsed);

如果你打算经常使用它,你可以创建一个辅助方法

public static TimeSpan Benchmark(Action action)
{
    var sw = Stopwatch.StartNew();
    action();
    sw.Stop();
    return sw.Elapsed;
}
...
var timeTaken = Benchmark(() => /* run some code */)

【讨论】:

  • Winforms c# 中没有“秒表”这样的东西吗?如果我写秒表,秒表没有 dll 为什么我不能使用它?
  • @user3409638 是的,它位于System.Diagnostics 命名空间中,只需在应用顶部添加一个 using 即可。或者,在 IDE 中右键单击 Stopwatch 并选择 Resolve,它会为您执行此操作。
  • @user3409638 它就在那里,它自 .NET 2.0 以来一直是核心框架的一部分。
【解决方案3】:

通常会使用 stopwatch.startnew、stop、elapsedtime 方法。 市场上有一些分析工具,微软也有自己的内置性能套件。以下链接是有关如何设置它的教程。 http://msdn.microsoft.com/en-us/library/ms182372.aspx

【讨论】:

    猜你喜欢
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多