南阳网站关键词,十大效果图网站,域外网站是,好制作网站公司背景
最近再看fllink的性能基准测试时#xff0c;发现它使用了OperationsPerInvocation注解#xff0c;本文就来记录下这个注解的含义
官方解释
从官方文档#xff1a;http://javadox.com/org.openjdk.jmh/jmh-core/0.9/org/openjdk/jmh/annotations/OperationsPerInvoca…背景
最近再看fllink的性能基准测试时发现它使用了OperationsPerInvocation注解本文就来记录下这个注解的含义
官方解释
从官方文档http://javadox.com/org.openjdk.jmh/jmh-core/0.9/org/openjdk/jmh/annotations/OperationsPerInvocation.html Benchmark OperationsPerInvocation(10) public void test() { for (int i 0; i 10; i) { // do something } }
如上所示不管是平均时间还是吞吐量他衡量的是循环里面{do something}这个操作的
普通理解
在使用JMH进行基准测试时JMH的统计结果不是以调用Invocation为统计结果的而是以Operation也就是操作作为统计结果的比如统计的是一次操作的耗时或者每秒多少次操作数(吞吐量)而不是一次调用的耗时或者每秒多少次调用次数一个方法等同于一次调用Invocation而一次调用可以对应N个操作(OperationsPerInvocation(N)),N由注解OperationsPerInvocation里面的值决定默认是1.比如假设同样一个方法单纯只是OperationsPerInvocation(1)和OperationsPerInvocation(100)不一样的话后面的注解表示一次调用代表100个操作那么输出结果中响应时间会提高100倍吞吐量也会提高100倍
彩蛋 为什么Loop基准测试中得到的结论和这里的不一样