<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

     Stopwatch sw1 = new Stopwatch();
                sw1.Start();
                for (int i = 0; i < 100000000; i++) {
                    string result1 = ((Convert.ToString(null) ?? "123"));
                }
            
               sw1.Stop();
               this.label1.Text = sw1.Elapsed.ToString();

    1.引入命名空間     using System.Diagnostics;

    2. // 開始計(jì)時(shí)
        Stopwatch watch = new Stopwatch();
       watch.Start();

         // -----你的代碼-----
        // 停止計(jì)時(shí)
        watch.Stop();
       Console.WriteLine(watch.Elapsed);

    軟件的運(yùn)行速度必須要在用戶可以接受的范圍內(nèi)。通常,改善那些短暫的但頻繁使用的例程的速度會大幅度地提高軟件的整體速度。
    要改善速度,當(dāng)然首先要能夠量度時(shí)間。好,那我們考慮一下在跑道上的情況,槍聲一響,馬上按下秒表開始計(jì)時(shí),
    在選手到達(dá)終點(diǎn)那一刻結(jié)束計(jì)時(shí),這時(shí)就可以知道該選手所用的時(shí)間了。要開始對下一輪比賽計(jì)時(shí)前,要先將秒表歸零。
    .NET2.0也提供了這樣一個(gè)秒表:Stopwatch類,它可以比較精確地測量時(shí)間。
    速度測試:
    軟件的性能和可測性是一個(gè)復(fù)雜的主題。要確保應(yīng)用程序能夠滿足用戶的期望,就需要在開發(fā)周期內(nèi)考慮它的性能和可測性。
    這在設(shè)計(jì)階段至關(guān)重要,一個(gè)糟糕的設(shè)計(jì)幾乎肯定會導(dǎo)致糟糕的用戶體驗(yàn)。然而,僅僅有好的設(shè)計(jì)也不能保證程序能夠高效地運(yùn)行,最終代碼的質(zhì)量同樣重要。
    量度一個(gè)運(yùn)行時(shí)間較長的例程相當(dāng)簡單。如果一個(gè)過程會持續(xù)幾分鐘,只要一塊腕表就可以記錄它的時(shí)間了。
    比如一個(gè)執(zhí)行時(shí)間為兩分鐘的過程,10%的改善能夠節(jié)省12秒,這是很容易去確定的。
    而如果要測量一個(gè)非常短暫的過程,就要考慮更好的精確性了。比如有一些很小的例程,它們的運(yùn)行時(shí)間可能只有千分之一秒,
    但會被調(diào)用100萬次,這樣的累積效果就明顯了。在.NET framework的先前版本中,需要使用Windows API函數(shù),
    而在.NET framework 2.0中,微軟引入了Stopwatch(它就是我們的秒表)類來簡化時(shí)間的量度任務(wù)。
    Stopwatch類:
    使用Stopwatch類來量度時(shí)間非常簡單。跟現(xiàn)實(shí)生活中的秒表一樣,這個(gè)類的對象也能夠?qū)τ?jì)數(shù)器進(jìn)行開始、停止、歸零(重置)操作,
    不過它可比一般的秒表精確多了,它能夠精確到微秒(也就是百萬分之一秒)。
    示例代碼:
    要演示Stopwatch的使用還是來段代碼吧。下面是一個(gè)控制臺應(yīng)用程序,它將1到100萬之間的所有整數(shù)累加:


    using System;

    namespace StopWatchClass
    {
    class Program
    {
    static void Main(string[] args)
    {

    long total = 0;

    for (int i = 1; i <= 10000000; i++)
    {
    total
    += i;
    }
    }
    }
    }


    添加Stopwatch對象:
    Stopwatch類位于System.Diagnostics命名空間。下面是添加對象后的代碼:

    using System;
    using System.Diagnostics;

    namespace StopWatchClass
    {
    class Program
    {
    static void Main(string[] args)
    {
    Stopwatch timer
    = new Stopwatch();
    long total = 0;

    for (int i = 1; i <= 10000000; i++)
    {
    total
    += i;
    }
    }
    }
    }


    控制Stopwatch對象:
    Stopwatch提供了幾個(gè)方法用以控制Stopwatch對象。Start方法開始一個(gè)計(jì)時(shí)操作,Stop方法停止計(jì)時(shí)。
    此時(shí)如果第二次使用 Start方法,將繼續(xù)計(jì)時(shí),最終的計(jì)時(shí)結(jié)果為兩次計(jì)時(shí)的累加。為避免這種情況,
    在第二次計(jì)時(shí)前用Reset方法將對象歸零。這三個(gè)方法都不需要參數(shù)。代碼是:

    using System;
    using System.Diagnostics;

    namespace StopWatchClass
    {
    class Program
    {
    static void Main(string[] args)
    {
    Stopwatch timer
    = new Stopwatch();
    long total = 0;

    timer.Start();
    for (int i = 1; i <= 10000000; i++)
    {
    total
    += i;
    }

    timer.Stop();

    }
    }
    }


    讀取Stopwatch結(jié)果:
    在結(jié)束計(jì)時(shí)后下一步就是讀取計(jì)時(shí)結(jié)果了。Stopwatch類提供了以下屬性:

    • Elapsed:返回一個(gè)TimeSpan對象,表示計(jì)時(shí)時(shí)間間隔;
    • ElapsedMilliseconds:返回計(jì)時(shí)經(jīng)過的微秒數(shù),精確度稍差,適合于稍長一點(diǎn)的計(jì)時(shí);
    • ElapsedTicks: 返回計(jì)時(shí)經(jīng)過的計(jì)時(shí)器刻度(timer tick)數(shù)。計(jì)時(shí)器刻度是Stopwatch對象可能的最小量度單位。
    • 計(jì)時(shí)器刻度時(shí)間的長度由特定的計(jì)算機(jī)和操作系統(tǒng)確定。Stopwatch對象的 Frequency靜態(tài)字段的值表示一秒所包含的計(jì)時(shí)器刻度數(shù)
    • 。注意它與TimeSpan的Ticks屬性所用的時(shí)間單位的區(qū)別。

    應(yīng)當(dāng)根據(jù)計(jì)時(shí)任務(wù)的情況選擇其中的一個(gè)屬性。在我們的示例程序中,Elapsed屬性提供了需要的精確度,用它來輸出經(jīng)過的微秒數(shù)
    。這也是TimeSpan的最高精確度了。
    下面是最終的程序代碼:


    using System;
    using System.Diagnostics;

    namespace StopWatchClass
    {
    class Program
    {
    static void Main(string[] args)
    {
    Stopwatch timer
    = new Stopwatch();
    long total = 0;

    timer.Start();
    for (int i = 1; i <= 10000000; i++)
    {
    total
    += i;
    }

    timer.Stop();

    decimal micro = timer.Elapsed.Ticks / 10m;
    Console.WriteLine(
    "Execution time was {0:F1} microseconds.", micro);
    }
    }
    }


    另外,使用IsRunning屬性可以查看一個(gè)Stopwatch實(shí)例是否正在計(jì)時(shí),使用StartNew方法可以開始一個(gè)新的計(jì)時(shí)器。


    posted on 2011-12-19 13:25 sanmao 閱讀(2542) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 激情97综合亚洲色婷婷五| 欧洲精品成人免费视频在线观看| 国产成人免费全部网站| 亚洲一区二区三区成人网站| 50岁老女人的毛片免费观看| 久久亚洲精品国产精品| 外国成人网在线观看免费视频| 国产亚洲成av人片在线观看| 成人无码WWW免费视频| 久久99国产亚洲高清观看首页| 中文永久免费观看网站| 亚洲桃色AV无码| 免费国产成人α片| 91嫩草私人成人亚洲影院| 99久久免费中文字幕精品| 亚洲精品动漫在线| 99久久免费国产香蕉麻豆| 久久亚洲精品国产精品婷婷| 成人一a毛片免费视频| 久久精品国产亚洲AV天海翼| 亚洲日本一区二区三区在线不卡| 好男人资源在线WWW免费| 亚洲成a人片77777老司机| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 老汉色老汉首页a亚洲| 亚洲毛片在线免费观看| 亚洲第一区二区快射影院| 四虎影院永久免费观看| 久久久WWW免费人成精品| 亚洲视频在线视频| 大陆一级毛片免费视频观看i| 精品久久久久久亚洲中文字幕| 亚洲人午夜射精精品日韩| 最近中文字幕无免费| 国产亚洲精品成人AA片| 亚洲中文字幕丝袜制服一区| 免费国产午夜高清在线视频| 亚洲第一男人天堂| 亚洲女初尝黑人巨高清| 欧美在线看片A免费观看| 一个人看的hd免费视频|