在C#中检查代码性能的最佳方法

时间:2014-09-03 06:19:10

标签: c# c++ performance

我们正在开发两个不同的库,这些库往往执行相同的工作。我被指派检查哪个库使用给定的输入集更快地执行相同的工作。有多个测试用例来确定这一点,我想检查一下库执行任务需要多少时间(以毫秒为单位)。

以下是代码的大纲。

// preparation of input parameters
// Get the timestamp
// Calling the desired library with the set of input parameters
// again get the timestamp
// Process the output received from the library

// get a diff between timestamp and write it into a file.

我应该在C#中这样做,在阅读一些提供的文档和一些在线搜索时,我想出了以下代码,可以用来衡量所花费的时间(以毫秒为单位)

int s1 = DateTime.Now.Millisecond;
int e1 = DateTime.Now.Millisecond;
int f1 = e1 - s1;
FileStream fs = new FileStream("Time_Diff.txt", FileMode.Append);
StreamWriter sw = new StreamWriter(fs);
string str = Convert.ToString(f1);
sw.WriteLine(str);
sw.WriteLine(e1 + " " + s1);
sw.Flush();
sw.Close();

我只是想知道我正朝着正确的方向前进。另外,如果有人可以建议我做另一种做同样事情的方法吗?

我想知道的另一件事是我可以使用哪些其他实用的方法来确保我们选择的库能够提供最佳性能?

另一个小请求。有人可以让我知道如何用C ++实现秒表(或任何其他类似方式来获取时间戳)吗?

谢谢, Azeem

1 个答案:

答案 0 :(得分:2)

按如下方式使用秒表。

        var stopWatch = System.Diagnostics.Stopwatch.StartNew();
        FileStream fs = new FileStream("Time_Diff.txt", FileMode.Append);
        StreamWriter sw = new StreamWriter(fs);
        //Total time required
        sw.WriteLine("\nTotal time: " + stopWatch.Elapsed.TotalSeconds.ToString());
        sw.Flush();
        sw.Close();