我的机器的细节拍摄总时间:32位操作系统(WIN-7),双核心,主频:2.93GHz处理器,使用语言= C#如何计算for循环
我有循环
for (long d = 0 d<= K ; d++)
{
//no instrucitons
}
如果K是任何长数。
计算完成此循环所需时间(以秒为单位)的公式是什么?
我的机器的细节拍摄总时间:32位操作系统(WIN-7),双核心,主频:2.93GHz处理器,使用语言= C#如何计算for循环
我有循环
for (long d = 0 d<= K ; d++)
{
//no instrucitons
}
如果K是任何长数。
计算完成此循环所需时间(以秒为单位)的公式是什么?
如果你编译一个空循环,有没有副作用(在你的榜样情况下,意味着阅读K
有没有副作用),然后执行时间你可以使用的Stopwatch class
using System;
using System.Diagnostics;
using System.Threading;
class Program
{
static void Main(string[] args)
{
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
for (long d = 0; d<= K; d++)
{
//do something
}
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed;
// Format and display the TimeSpan value.
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds/10);
Console.WriteLine("RunTime " + elapsedTime);
}
}
他要求的公式不是来源。 – 2012-03-22 13:32:55
哇,我很喜欢你如何在所有代码中间放弃OP的循环代码,但是并没有打算修复'for'语句本身。 (在初始条件之后有一个缺失的分号) – 2012-03-22 13:33:36
更多的是秒表类,没有太注意循环,现在修复。 – turbo 2012-03-22 13:35:08
的Stopwatch.Elapsed Property应该是零,因为编译器会优化它,看它没有任何用处。
你可以使用一个stopwatch
Stopwatch sw = new Stopwatch();
sw.start();
for(long d = 0 d<= K ; d++)
{
//dostuff
}
sw.stop()
debug.writeline(sw.ElapsedMilliseconds);
假设忽略不计其他线程,它使用处理器的机器上的进程。 – Dhananjay 2012-03-22 13:28:45
你的意思是不使用计时器或秒表并运行程序? – Msonic 2012-03-22 13:29:26
因此,假设这是一个硬实时系统?由于C#永远不适合这种风格,因此非常不成问题。 GC可以在任何时候踢它,并完成任何计算。 – 2012-03-22 13:29:40