使用jmh進(jìn)行微基準(zhǔn)測試

maven

        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-core</artifactId>
            <version>1.17.5</version>
        </dependency>
        <dependency>
            <groupId>org.openjdk.jmh</groupId>
            <artifactId>jmh-generator-annprocess</artifactId>
            <version>1.17.5</version>
            <scope>provided</scope>
        </dependency>

使用

@BenchmarkMode(Mode.Throughput)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Warmup(iterations = 5, time = 3, timeUnit = TimeUnit.SECONDS)
@Measurement(iterations = 20, time = 3, timeUnit = TimeUnit.SECONDS)
@Fork(1)
@State(Scope.Benchmark)
public class DemoJmhTest {

    private String pid;

    @Setup
    public void init() {
       // prepare 
    }
    
    @TearDown
    public void destory() {
       // destory 
    }

    @Benchmark
    public void benchPrecondition(){
        try{
            Preconditions.checkNotNull(pid);
        }catch (Exception e){

        }
    }

    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                .include(".*" +DemoJmhTest.class.getSimpleName()+ ".*")
                .forks(1)
                .build();
        new Runner(opt).run();
    }
}

BenchmarkMode類型

Mode.Throughput

在有時限的迭代里頭,該方法能被調(diào)用多少次

Mode.AverageTime

方法平均執(zhí)行時間

Mode.SampleTime

對方法執(zhí)行時間進(jìn)行采樣計(jì)算

Mode.SingleShotTime

方法的單次調(diào)用時間/一次批處理的總調(diào)用時間

注意點(diǎn)

從@State對象讀取測試輸入并返回計(jì)算的結(jié)果,方便JMH對冗余代碼進(jìn)行消除;
如果是測試方法的性能,則避免通過在方法內(nèi)循環(huán)(重復(fù)執(zhí)行方法內(nèi)原來代碼),這樣造成方法方法調(diào)用次數(shù)的減少,結(jié)果不準(zhǔn)確,應(yīng)該把循環(huán)調(diào)用放在方法外頭。

doc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,699評論 19 139
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,390評論 0 17
  • 文章來自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,377評論 2 126
  • 這幾天從票圈來看 我們知道,90后不好了 他們已經(jīng):禿了,離婚了,出家了,毀容了,油膩了,孤寡了…… 看得小鯨鯨特...
    HR聚樂部閱讀 375評論 0 1
  • 橢圓邊框3 陰影 倒影效果
    safiriGitHub閱讀 255評論 0 0

友情鏈接更多精彩內(nèi)容