C#代码执行时间

代码执行效率的才考之一:时间
如何获取一段代码、一个方法等执行了多长时间?
使用 Stopwatch

下面设计一个求从 1 加到 n 的,n 个数之和,使用两种方式实现,看两个方法各自执行了多长时间

class ExecutingTime
	public ExecutingTime()
		int n = 1000000000;
		Stopwatch stopwatch = new Stopwatch();
		stopwatch.Start();
		long sum = Sum(n);
		stopwatch.Stop();
		Console.WriteLine("执行时间 Milliseconds:" + stopwatch.ElapsedMilliseconds + "    Ticks:" + stopwatch.ElapsedTicks);
		Console.WriteLine("1 to 100000000 sum:" + sum + "\n");
		long millisseonds = stopwatch.ElapsedTicks * 1000 / Stopwatch.Frequency;
		Console.WriteLine("ticks:" + stopwatch.ElapsedTicks + " =" + millisseonds + " Milliseconds \n");
		// 重置时间
		stopwatch.Reset();
		stopwatch.Start();
		sum = Sum2(n);
		stopwatch.Stop();
		Console.WriteLine("执行时间 Milliseconds:" + stopwatch.ElapsedMilliseconds + "    Ticks:" + stopwatch.ElapsedTicks);
		Console.WriteLine("1 to 100000000 sum:" + sum + "\n");
	private long Sum(int n)
		long sum = 0;
		for (int i = 1; i <= n; ++i)
			sum += i;
		return sum;
	private long Sum2(int n)
		long sum = (long)(1 + n) * (n / 2);
		return sum;

执行结果如下,首先保证正确性,看两个打印的 sum值 完全相同且结果正确
第一个执行时间 Milliseconds:1897 Ticks:5915453
第二个执行时间 Milliseconds:0 Ticks:266
从毫秒级别已经看不出第二个方法执行多长时间了(不足1毫秒所以显示 0)
下面看 ticks,注意:ElapsedTicks 换算成毫秒不是除以 TimeSpan.TicksPerMillisecond 而是依赖 CPU 频率而定,需要使用 Stopwatch.Frequency(每秒ticks),计算公式如下,代码中也验证了ticks 到millisseonds 的转换结果

long millisseonds = stopwatch.ElapsedTicks * 1000 / Stopwatch.Frequency;

所以两个代码的执行时间比为 5936013 : 257 = 23097 : 1
所以代码设计的好坏对效率影响还是很大的
在这里插入图片描述

C#代码执行效率有时候想查看执行一些代码花费了多长时间,或者看某些代码的效率。怎么办呢。 下面通过使用C#方法检测一下新建一个Unity工程,在场景中创建一个GameObject,创建脚本 Efficiency.cs 代码如下using UnityEngine;using System.Collections;using System.Diagnostics;public class Eff C# 代码执行时间 Stopwatch stopwatch = new Stopwatch(); //实例化 Debug.Log(stopwatch.Elapsed); //获取当前实例测量得出的总运行时间 Debug.Log(stopwatch.ElapsedMilliseconds);//获取当前实例测量得出的总运行时间(以毫秒为单位) Debug.Log(stopwatch.IsRunning); //获取一个值,该值表示 Stop