Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的代码运行需要多长时间?_C#_Benchmarking_Performance - Fatal编程技术网

C# 我的代码运行需要多长时间?

C# 我的代码运行需要多长时间?,c#,benchmarking,performance,C#,Benchmarking,Performance,我怎样才能知道我的C#代码运行需要多少时间?查看该课程。该课程在.NET中提供了高精度计时。它能够测量时间,灵敏度约为100纳秒(毫秒的分数)。要获得准确的分辨率,请读取的值 此外,确保反复运行代码(尽可能多次),以获得更好的平均时间,并减少CPU负载波动的影响。查看课程: 正如其他人所说,课堂对于简单的时间安排是有好处的。但要记住的其他方面: 您的代码可能会生成在停止秒表后需要进行垃圾收集的对象 相反,您的计时可能包括正在垃圾收集的其他对象,即使它们与您的代码无关 如果您在第一次运行方法之前

我怎样才能知道我的C#代码运行需要多少时间?

查看该课程。

该课程在.NET中提供了高精度计时。它能够测量时间,灵敏度约为100纳秒(毫秒的分数)。要获得准确的分辨率,请读取的值

此外,确保反复运行代码(尽可能多次),以获得更好的平均时间,并减少CPU负载波动的影响。

查看课程:

正如其他人所说,课堂对于简单的时间安排是有好处的。但要记住的其他方面:

  • 您的代码可能会生成在停止秒表后需要进行垃圾收集的对象
  • 相反,您的计时可能包括正在垃圾收集的其他对象,即使它们与您的代码无关
  • 如果您在第一次运行方法之前开始计时,它将包括JIT时间
  • 如果你花很短的时间,那会导致非常不可预测的结果——对于基准测试,我倾向于运行代码几秒钟,以考虑应用程序被其他进程中断等

如果您对基准测试感兴趣,我有一个项目,我必须在某个时候重新开始工作-这不是我想要的结果,但这是一个开始。我将在中详细介绍我希望通过它实现的功能。

我建议使用分析工具,例如测试应用程序的速度并查找速度较慢的代码。这将允许您对执行时间进行逐行测试。

如果您想要简单,只需在其周围放置一个N-迭代循环,并使用秒表(或手表)除以N。例如,如果您想要微秒,则设N=1000000。如果您担心循环的开销,只需将其展开10倍。

个人感谢MiniBench,Jon-它已成为我的宝贵工具。@C罗杰斯:您可能比我当时使用得更多!我真的会在以后的某个时候再谈的。。。不过,目前写作已经占据了主导地位:(
var timer = System.Diagnostics.Stopwatch.StartNew();
// Run code here.
var elapsed = timer.ElapsedMilliseconds.
Stopwatch sw = new Stopwatch();
sw.Start();

// your code here

sw.Stop();
TimeSpan elapsedTime = sw.Elapsed;