<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)

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: jizz免费在线影视观看网站| 免费人成视频在线观看不卡| 久久久久国色AV免费观看| 亚洲色大18成人网站WWW在线播放| 亚洲精品无码Av人在线观看国产| 国产一级一片免费播放| 最近的中文字幕大全免费版| 亚欧免费一级毛片| 成在人线av无码免费高潮水| 国产亚洲精品91| 亚洲精品人成网线在线播放va | 日韩免费高清一级毛片| 亚洲中文字幕无码久久2020| 亚洲A∨无码无在线观看| 亚洲中文字幕第一页在线| 亚洲av再在线观看| 在线观看亚洲免费| 破了亲妺妺的处免费视频国产| 免费v片在线观看视频网站| 久久精品一本到99热免费| 男人都懂www深夜免费网站| 91视频免费观看| 99热在线日韩精品免费| eeuss影院ss奇兵免费com| 七次郎成人免费线路视频| 美女被免费网站视频在线| 国产精品亚洲va在线观看| 国产精品久久久久久亚洲影视| 亚洲色成人网站WWW永久四虎| 亚洲偷偷自拍高清| 亚洲AV成人一区二区三区在线看| 亚洲一区二区三区亚瑟| 亚洲夂夂婷婷色拍WW47| 亚洲乱妇老熟女爽到高潮的片| 亚洲精品乱码久久久久蜜桃| 亚洲GV天堂GV无码男同| 美女黄色毛片免费看| 特级毛片爽www免费版| 中文永久免费观看网站| 久久久国产精品福利免费| 91成人免费观看|