当前位置: 首页 > 知识库问答 >
问题:

如何用JMH测量平均冷启动时间?

方寒
2023-03-14

在JMH(Java微基准线束)中,我们可以使用

@BenchmarkMode(Mode.AverageTime)
@Warmup(iterations = 10)
@Measurement(iterations = 10)

评估JVM预热后执行的平均时间。

我们也可以使用

@BenchmarkMode(Mode.SingleShotTime)
@Measurement(iterations = 1)

估计执行的冷启动时间。但这只执行一次基准测试,这可能会引入偏差。那么,是否有任何方法可以评估JMH中冷启动的平均时间?

共有1个答案

齐锐进
2023-03-14

根据阿列克谢本人的说法(尽管是从2014年开始的):

单次基准测试最初注定要在多个分叉上运行一次测量迭代——这些场景用于评估“冷”性能。但在许多情况下,您可能需要更多的度量迭代,尤其是当您只运行一个fork时,因为会生成更多的样本。

@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.NANOSECONDS)
public class AverageSingleShot {

    public static void main(String[] args) throws Exception {
        Options opt = new OptionsBuilder()
            .include(AverageSingleShot.class.getSimpleName())
            .build();

        new Runner(opt).run();
    }

    @Fork(100)
    @Benchmark
    @BenchmarkMode(Mode.SingleShotTime)
    public int test() {
        return ThreadLocalRandom.current().nextInt() + ThreadLocalRandom.current().nextInt();
    }

}

除此之外,这将告诉你平均值(参见100):

 Benchmark               Mode  Cnt      Score      Error  Units
 AverageSingleShot.test    ss  100  41173.540 ± 2871.546  ns/op
 

您还将获得百分位数直方图

 类似资料:
  • 问题内容: 我有一个用Java编写的应用程序,我想知道到达之前需要花费多少时间,并且在那个阶段它正在做什么? 我知道微软有一个称为MPGO(经理配置文件指导的优化)的工具,是否有Java的等效工具? 问题答案: 一种从Java应用程序内部测量启动时间的简单方法: 您可以使用JVMTI代理来跟踪VM事件,例如类加载,垃圾回收,方法编译等。这是我制作的一个简单代理-vmtrace(以及Windows

  • 我正试图找到一个子阵列最小切片的余数问题的解决方案,并且我已经设计了一个使用Kadane算法的修改版本的解决方案。我目前已经拿到了90/100,并且设法通过了O(n)的几乎所有考试。但是我好像过不了“medium_range,increasing,decreasing(legth = ~ 100)and small functional,got 5 expected 3”,我也不知道为什么。这可能

  • 启动时间测量 main函数执行之前 增加启动环境变量, 统计main函数启动前所使用的时长 Product -> Scheme -> Edit Scheme: Run -> Environment Variables下新增变量DYLD_PRINT_STATISTICS Value为 1 运行工程, 启动后, 控制台便可看到统计时间 main函数启动时间 在main函数中记录启动时间 在AppDel

  • 我有一个cordova应用程序(codova(3.4.0)在iOS上运行,很快也在Android上运行。推送通知已实现并正常工作。我无法通过消息推送检测应用程序何时启动并将应用程序重定向到正确的页面。 注意:这与应用在后台运行时从消息推送启动应用无关。只有当应用完全关闭时! 我现在有以下工作流: 定期启动: 等待科尔多瓦。js启动ondeviceready事件 从消息推送冷应用启动: 等待科尔多瓦

  • 我正在拼命寻找解决熊猫问题的办法。也许你能帮我。 我正在寻找一个滚动平均值,考虑到之前的平均值。 df看起来像这样: 现在,使用函数我会得到如下结果: 我想从第一个计算中考虑平均值,如下所示: 哪里 提前谢谢你!

  • 本文向大家介绍冷启动和热启动之间的区别,包括了冷启动和热启动之间的区别的使用技巧和注意事项,需要的朋友参考一下 冷启动 冷启动是指在计算机处于关闭状态时通过按电源按钮来启动计算机。最初,初始化微处理器,然后读取ROM,然后启动系统引导过程。 暖启动 热启动是指使用重新启动按钮或使用CTRL + ALT + DELETE键命令组合重新启动系统。当系统停止响应或系统更新要求系统重新启动以使更新生效时,