2

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

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

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

4

3 回答 3

3

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

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

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

于 2012-04-25T15:05:02.457 回答
0

使用秒表类。以下面的方法为例。

using System.Diagnostics;

    public void yourAlgorithm()
        {

            Stopwatch timePerParse = Stopwatch.StartNew();
            /** -- TODO --**/

            timePerParse.Stop();
            Console.WriteLine(timePerParse.ElapsedMilliseconds);


        }
于 2014-03-01T20:23:40.390 回答
0

The most important source of delay due to observer's effect is printing itself. Another potential delayer is debug message text formatting. So I suggest the following:

  • If you can anticipate the number of loops and number of stages per loop, create an array to store timing information. If not, use a dynamic list.
  • During execution, store time and aditional information in that array or list.
  • If possible, don't store messages along with time but codes, for example 1=Stage 1, 2=Stage 2, etc.
  • At the end of the execution, dump all the information to screen or file, and format messages as needed.
于 2012-04-25T15:11:42.223 回答