【问题标题】:Running time of an application in Visual StudioVisual Studio 中应用程序的运行时间
【发布时间】:2012-04-25 15:03:03
【问题描述】:

我正在用 c# 解决一些算法问题并将它们作为控制台应用程序运行。

为了检查应用程序的效率,我想看看它们的运行时间是多少。

目前我正在打印程序开始和结束时的时间并计算时间差,但是有没有办法减少Observer' effect
一些我不知道的内置工具/插件?

【问题讨论】:

    标签: visual-studio-2010 c#-4.0


    【解决方案1】:

    您应该使用专门为此设计的 Stopwatch 类。

    为避免测量 JIT 时间,您还应该在测量任何内容之前至少运行每个算法一次,以便 JIT 有时间运行。

    在测量算法时,您应该将每个算法运行数百次并取平均运行时间。

    【讨论】:

      【解决方案2】:

      由于观察者的影响,最重要的延迟来源是打印本身。另一个潜在的延迟因素是调试消息文本格式。所以我建议如下:

      • 如果您可以预测每个循环的数量和阶段数 循环,创建一个数组来存储时序信息。如果没有,请使用 动态列表。
      • 在执行期间,将时间和附加信息存储在该数组中 或列表。
      • 如果可能,不要将消息与时间一起存储,而是与代码一起存储,因为 示例 1=第 1 阶段、2=第 2 阶段等。
      • 在执行结束时,将所有信息转储到屏幕或文件中,并根据需要格式化消息。

      【讨论】:

        【解决方案3】:

        使用stopwatch class。以下面的方法为例。

        using System.Diagnostics;
        
            public void yourAlgorithm()
                {
        
                    Stopwatch timePerParse = Stopwatch.StartNew();
                    /** -- TODO --**/
        
                    timePerParse.Stop();
                    Console.WriteLine(timePerParse.ElapsedMilliseconds);
        
        
                }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-10
          • 1970-01-01
          • 2015-04-22
          • 1970-01-01
          • 1970-01-01
          • 2014-09-17
          相关资源
          最近更新 更多