best way to check performance of the code in C#
我们正在处理两个不同的库,它们往往执行相同的工作。我被指派检查哪个库在给定的一组输入下更快地执行相同的工作。有多个测试用例可以确定这一点,我想检查库执行任务所花费的时间(以毫秒为单位)。
下面是代码的大纲。
1 2 3 4 5 6 7
| // 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来做,在阅读一些提供的文档和一些在线搜索时,我想出了以下代码,可以用来测量所用的时间(毫秒)。
1 2 3 4 5 6 7 8 9 10
| 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++中做同样的事情吗?
谢谢,阿泽姆
- DateTime实例之间的差异不是一个好主意,因为精度不是很好(jaychapman.blogspot.co.at/2007/11/datetimenow precision.htm‌&8203;l)…使用Stopwatch实例!不管怎样,只要使用关键字"benchmark"和"c"进行复杂的谷歌搜索…或者,只需在so上阅读以下问题:stackoverflow.com/questions/28637/…
- 用Stopwatch类代替DateTime类。相关问题。
- 每次通话需要多长时间?你应该确保你在安排大量的工作时间——这可能意味着打电话要花费数千或数百万的时间。
- 哦,使用File.AppendAllText—或者如果必须使用Stream和StreamWriter,使用using语句:)
- 谢谢你们的帮助!!!!正在执行秒表。
使用秒表如下。
1 2 3 4 5 6 7 8
| 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("
Total time:" + stopWatch .Elapsed.TotalSeconds.ToString());
sw .Flush();
sw .Close(); |