java内部语言和内联对Lambda性能的影响?
我使用了这个基准java8-lambda-performance-test,在运行它时,我做了以下工作:
一,。禁用的固有用法
二,。禁用内联
三,。禁用编译 模式
我发现禁用这两个第一优化对结果没有影响
这很奇怪,而且在使用和print infrance运行基准测试时,我没有找到对infrance compiledLambdaForm
的任何调用
因为数学本质在那里被大量使用,所以。。。我原以为禁用intrinsic会降低性能
你可以在下面搜索框中键入要查询的问题!
我使用了这个基准java8-lambda-performance-test,在运行它时,我做了以下工作:
一,。禁用的固有用法
二,。禁用内联
三,。禁用编译 模式
我发现禁用这两个第一优化对结果没有影响
这很奇怪,而且在使用和print infrance运行基准测试时,我没有找到对infrance compiledLambdaForm
的任何调用
因为数学本质在那里被大量使用,所以。。。我原以为禁用intrinsic会降低性能
# 1 楼答案
我不认为内部函数有任何影响,因为Lambda表达式主要使用类
LambdaMetaFactory.
,这就是为什么内部函数和内部函数对Lambda本身没有影响的原因对于数学本质,我认为,由于它们仅用于恒等式方法,而恒等式方法仅用于
LambdaExtraAverage
和LambdaExtraSerial
测试,因此它们不会对基准测试结果产生太大影响# 2 楼答案
您没有注意到预期性能效果的原因是poorly written benchmark
我使用JMH重写了基准测试,最终一切正常
结果如下:
正如预期的那样,带有
-XX:-Inline
的基准测试工作时间延长了70%,而禁用了数学本质的版本似乎慢了60倍