2012-09-14 57 views
4

我想測試我的電腦性能 所以我跑這個代碼爲什麼.NET 2.0快4.0然後

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     DateTime dt = DateTime.Now; 
     Int64 i = 0; 
     do 
     { 
      i++; 
     } while (dt.AddSeconds(10) >= DateTime.Now); 

     this.textBox1.Text = i.ToString("n0"); 
    } 


} 

當我選擇的.NET Framework 2.0,我得到的3300萬 結果,但是當我選擇4.0我只得到9百萬

+0

4.0有2個版本的價值膨脹? –

+0

@MarcB:我不同意很多優化進入v4。 –

+10

它們都是「釋放」模式(不是調試),在IDE之外執行?除非是這樣,否則任何比較都是毫無意義的。它甚至可能主要是intellitrace在調試器中記錄東西。 –

回答

1

不是真正的冒險,但太長的評論......問題中的代碼問題似乎源於.NET 2和4之間的性能差異。具體而言,看到DateTime.Now在.NET 4中比在2.0中慢得多。

下面的測試控制檯應用程序(多次嘗試之後)的輸出是大約300,310毫秒.NET 2和1050,在.NET 4

發佈的代碼,以便其他人可以在其他嘗試1090毫秒平臺,配置。我在Windows 7-64位,在發佈模式下編譯。

using System; 
using System.Diagnostics; 
class Program 
{ 
    public static void Main(string[] args) 
    { 
     const int m = 1000000; 
     DateTime d; 

     Stopwatch s1 = Stopwatch.StartNew(); 
     for (int i = 0; i < m; i++) 
     { 
      d=DateTime.Now; 
     } 
     s1.Stop(); 

     Stopwatch s2 = Stopwatch.StartNew(); 
     for (int i = 0; i < m; i++) 
     { 
      DateTime.Now.AddSeconds(10); 
     } 
     s2.Stop(); 

     Console.WriteLine("{0}, {1}",s1.ElapsedMilliseconds,s2.ElapsedMilliseconds); 
     Console.Read(); 
    } 
} 
相關問題