• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 195,  comments - 30,  trackbacks - 0
            apps.hi.baidu.com/share/detail/33559179

            Java 程序計(jì)時(shí)(Java Timing)
            (1)如何精確給代碼計(jì)時(shí);

            (2)計(jì)時(shí)機(jī)制本身的時(shí)間開(kāi)銷;

            經(jīng)典的程序計(jì)時(shí)利用Java API方法:System.currentTimeMillis(),在待測(cè)代碼前后放置一個(gè)秒表(stopwatch),計(jì)算前后時(shí)間差即可。
            下面是一個(gè)引自“”的stopwatch類,
            import java.io.PrintStream;

            final class Timer{ 

                private long startTime;
                private long endTime;
                public Timer() {   reset(); }

                public void start() {
                    System.gc();
                    startTime = System.currentTimeMillis();
                } 
                public void end() {
                    System.gc();
                    endTime = System.currentTimeMillis();
                 }
                public long duration() {
                    return (endTime - startTime);
                }
                public void printDuration( PrintStream out ) {
                    long elapsedTimeInSecond = duration() / 1000;
                    long remainderInMillis = duration() % 1000;
                    out.println("\nTotal execution time:"
                          + elapsedTimeInSecond + "."
                            + remainderInMillis
                            + " seconds");
                }
                public void reset() {
                    startTime = 0;
                     endTime = 0;
                }
                public static void main( String[] args ) {
                    Timer timer = new Timer();
                    timer.start();
                    for (int i = 0; i < 500; i++) {
                       System.out.print("#");
                    }
                    timer.end();
                    timer.printDuration(System.out); }
            }
            這是一種常規(guī)做法。
            在多線程環(huán)境中,線程切換由OS控制,因此兩次掐表之間可能記錄了被OS切換到的其它線程的執(zhí)行時(shí)間,這期間甚至包含其它線程的長(zhǎng)耗時(shí)I/O操作。
            多次掐表然后求其平均可一定程度上平滑這種誤差,然而,對(duì)于高精度要求,上述API秒表計(jì)時(shí)方式是有缺陷的。
            Jesper 在“Use the JVM Profiler Interface for accurate timing”中描述了一種利用Java Virtual Machine Profiler Interface (JVMPI)的方法
            發(fā)現(xiàn)了兩個(gè)新的函數(shù):System.currentTimeMillis()和System.nanoTime()。其中System.nanoTime()是1.5版以后的新函數(shù)。這兩個(gè)函數(shù)都是返回當(dāng)前系統(tǒng)的時(shí)間,只是System.nanoTime()返回的精度更高。
            posted on 2011-09-26 23:15 luis 閱讀(2226) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Java筆記
            <2011年9月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            99蜜桃臀久久久欧美精品网站| 狠狠狠色丁香婷婷综合久久五月| 久久久久久国产精品美女| 亚洲&#228;v永久无码精品天堂久久| 久久久久国产一区二区| 久久天天躁狠狠躁夜夜2020一| 伊人久久大香线蕉av不卡| 国产婷婷成人久久Av免费高清| 久久av高潮av无码av喷吹| 国产美女亚洲精品久久久综合 | 国产精品欧美久久久天天影视| 亚洲国产精品久久66| 色欲av伊人久久大香线蕉影院| 热99re久久国超精品首页| 亚洲精品无码久久一线| 中文成人久久久久影院免费观看| 四虎国产精品免费久久5151 | 久久久久免费精品国产| 国内精品久久久久影院老司| 日本道色综合久久影院| 久久精品国产亚洲AV无码娇色| 一级做a爰片久久毛片免费陪| 一本久久久久久久| 国产午夜福利精品久久2021| 色偷偷88888欧美精品久久久| 亚洲国产小视频精品久久久三级| 精品久久久久久无码人妻蜜桃| 97久久超碰国产精品旧版| 久久午夜伦鲁片免费无码| 无码人妻精品一区二区三区久久久| 亚洲国产综合久久天堂| 久久久网中文字幕| 久久se精品一区二区影院 | 无码人妻久久一区二区三区免费| 伊人久久国产免费观看视频 | 亚洲欧洲精品成人久久曰影片| 久久99精品久久久久久秒播| 久久国产精品偷99| 四虎国产精品成人免费久久| 久久亚洲色一区二区三区| 久久久青草青青国产亚洲免观|