• <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 程序計時(Java Timing)
            (1)如何精確給代碼計時;

            (2)計時機制本身的時間開銷;

            經典的程序計時利用Java API方法:System.currentTimeMillis(),在待測代碼前后放置一個秒表(stopwatch),計算前后時間差即可。
            下面是一個引自“”的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); }
            }
            這是一種常規做法。
            在多線程環境中,線程切換由OS控制,因此兩次掐表之間可能記錄了被OS切換到的其它線程的執行時間,這期間甚至包含其它線程的長耗時I/O操作。
            多次掐表然后求其平均可一定程度上平滑這種誤差,然而,對于高精度要求,上述API秒表計時方式是有缺陷的。
            Jesper 在“Use the JVM Profiler Interface for accurate timing”中描述了一種利用Java Virtual Machine Profiler Interface (JVMPI)的方法
            發現了兩個新的函數:System.currentTimeMillis()和System.nanoTime()。其中System.nanoTime()是1.5版以后的新函數。這兩個函數都是返回當前系統的時間,只是System.nanoTime()返回的精度更高。
            posted on 2011-09-26 23:15 luis 閱讀(2225) 評論(0)  編輯 收藏 引用 所屬分類: Java筆記
            <2009年7月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            精品国产热久久久福利| 久久综合狠狠综合久久综合88 | 久久久无码精品亚洲日韩蜜臀浪潮| 日韩亚洲欧美久久久www综合网| 一本大道加勒比久久综合| 无码人妻久久一区二区三区蜜桃| 久久精品人人做人人爽电影| 国内精品久久久久久99蜜桃| 久久久久亚洲精品男人的天堂| 久久婷婷五月综合色奶水99啪| 国产精品久久久福利| 亚洲精品无码久久一线| 香蕉久久夜色精品国产小说| 亚洲国产日韩欧美久久| 久久91精品国产91久久小草| 97久久国产综合精品女不卡| 国产精品九九久久免费视频| 久久久久无码精品国产不卡| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 久久综合色老色| 国产精品亚洲综合专区片高清久久久| 一本色道久久88—综合亚洲精品| 国内精品久久久久久久涩爱| 久久精品成人国产午夜| 国内精品久久人妻互换| 伊人久久精品无码二区麻豆| 欧美激情精品久久久久久久九九九 | 久久成人18免费网站| 国产精品99精品久久免费| 无码国内精品久久综合88| 久久99精品久久久久久9蜜桃| 久久精品国产精品青草| 久久久久亚洲AV无码专区体验| 欧美精品九九99久久在观看| 久久亚洲国产最新网站| 亚洲欧洲中文日韩久久AV乱码| 久久精品国产一区二区三区 | 51久久夜色精品国产| 亚洲国产精品久久久久久| 日本久久久久久中文字幕| 99久久精品国产一区二区三区 |