C# 代码执行时间

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
所以代码设计的好坏对效率影响还是很大的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值