2012-03-22 123 views
-4

我的机器的细节拍摄总时间:32位操作系统(WIN-7),双核心,主频:2.93GHz处理器,使用语言= C#如何计算for循环

我有循环

for (long d = 0 d<= K ; d++) 
{ 
    //no instrucitons 
} 

如果K是任何长数。

计算完成此循环所需时间(以秒为单位)的公式是什么?

+0

假设忽略不计其他线程,它使用处理器的机器上的进程。 – Dhananjay 2012-03-22 13:28:45

+0

你的意思是不使用计时器或秒表并运行程序? – Msonic 2012-03-22 13:29:26

+0

因此,假设这是一个硬实时系统?由于C#永远不适合这种风格,因此非常不成问题。 GC可以在任何时候踢它,并完成任何计算。 – 2012-03-22 13:29:40

回答

8

如果你编译一个空循环,有没有副作用(在你的榜样情况下,意味着阅读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); 
    } 
} 
+0

他要求的公式不是来源。 – 2012-03-22 13:32:55

+0

哇,我很喜欢你如何在所有代码中间放弃OP的循环代码,但是并没有打算修复'for'语句本身。 (在初始条件之后有一个缺失的分号) – 2012-03-22 13:33:36

+1

更多的是秒表类,没有太注意循环,现在修复。 – turbo 2012-03-22 13:35:08

0

你可以使用一个stopwatch

Stopwatch sw = new Stopwatch(); 
sw.start(); 
for(long d = 0 d<= K ; d++) 
{ 
    //dostuff 
} 
sw.stop() 
debug.writeline(sw.ElapsedMilliseconds);