簡體   English   中英

在Visual Studio Express中計算方法執行時間(沒有可用的分析器)?

[英]calculate method execution time in Visual Studio Express (No profiler available)?

我使用的是Visual Studio Express Edition,它沒有任何分析器或代碼分析器。

代碼有兩個委托執行相同的任務,一個使用匿名方法,另一個通過Lambda表達式。 我想比較哪一個花費更少的時間。

我怎樣才能在VS express中做到這一點? (不僅是方法的代表也)

如果是重復,請鏈接。

謝謝

我試過像這樣:

        /** Start Date time**/
        DateTime startTime = DateTime.Now;
        /********do the square of a number by using LAMBDA EXPRESSIONS********/
        returnSqr myDel = x => x * x;
        Console.WriteLine("By Lambda Expression Square of {0} is: {1}", a,myDel(a));
        /** Stop Date time**/
        DateTime stopTime = DateTime.Now;
        TimeSpan duration = stopTime - startTime;
        Console.WriteLine("Execution time 1:" + duration.Milliseconds);



        /** Start Date time**/            
        DateTime startTime2 = DateTime.Now;
        /*****do the square of a number by using ANONYMOUS EXPRESSIONS********/
        returnSqr myDel1 = delegate(int x) { return x * x;};
        Console.WriteLine("By Anonymous Method Square of  {0} is: {1}", a, myDel1(a));
        /** Stop Date time**/
        DateTime stopTime2 = DateTime.Now;
        TimeSpan duration2 = stopTime2 - startTime2;
        Console.WriteLine("Execution Time 2:" + duration.Milliseconds);

輸出給出:

執行時間1:0
執行時間2:0


為什么這樣?

你可以使用秒表課程。

Stopwatch sw = Stopwatch.StartNew();
// rest of the code
sw.Stop();
Console.WriteLine("Total time (ms): {0}", (long) sw.ElapsedMilliseconds);

使用StopWatch類在代碼運行之前啟動計時器,並在代碼結束后停止計時器。 對兩個代碼片段執行此操作,並找出需要花費時間的代碼片段。

這不是一個完美的解決方案,但它有所幫助

您可以考慮使用支持簡單開始/結束使用的Scenario類,並通過ETW進行可選的日志記錄。

來自他們的Wiki:

您可以使用Scenario類將性能檢測添加到應用程序(.NET或本機C ++)。 方案的最短描述是“一個名為秒表,可以在您啟動和停止時記錄”。

只是使用秒表類就可以了。

最有可能的是,您的代碼執行速度比計時設備的最大分辨率更快。 這就是為什么它報告“0”毫秒作為兩段代碼的執行時間:已經過去的時間量是不可檢測的。 對於某些人來說,這可能足以得出結論,這可能與你做哪種方式無關。

但是,如果准確比較每種方法的速度很重要,您可以嘗試在緊密循環中運行代碼。 從本質上講,無論你做了多少100或1000甚至一百萬次,無論你多少都需要花費足夠的時間來注冊你的計時設備。 顯然,在最終代碼中運行例程一次甚至幾次都不會花費那么長的時間,但至少它會讓你知道每個選項的相對速度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM