[讨论] 讨论一个演示低开销抛异常的microbenchmark
RednaxelaFX
2011-07-14
Alex Turner发了一帖演示“滥用”异常来操纵控制流的性能可以很高。(打不开链接的话请自备梯子…)
在原帖里作者做了个非常简单的microbenchmark,并导出一个结论: Alex Turner 写道 The amazing thing in the example code is that on the 1.7 JVM on Linux 64 bit I am using, the method using the return dispatch approach runs FASTER than the one with normal return.
他认为在他的测试里,抛异常的版本比不抛异常的版本还要快。 事实上这当然是有问题的解读。而这又是一个表现了microbenchmark很难写对的活生生的例子。 不过要正确理解为什么这个microbenchmark能跑出这样的结果却是件有趣的事: Alex Turner 写道 Dispatch: 477 No Dispatch: 713 40000000000 有兴趣的同学可以来尝试分析一下 这里涉及到OSR对microbenchmark的影响。不过常见的测试代码问题是同样在main()里跑两个大循环,由于OSR编译的影响,后一个循环通常比前一个循环快。这个例子则正好相反,数据显示前一个循环比后一个循环还要快。而这正是这个例子有趣的地方。 我的分析已经发在一个gist里了。不想被剧透的同学就先不要打开这个链接~ |
相关讨论
相关资源推荐
- 【Spark NLP】第 19 章:生产化 NLP 应用程序
- 高性能服务器中的C10K问题
- java 下一代语言_下一代的多语言JVM:GraalVM
- 论文翻译 WiscKey: Separating Keys from Values in SSD-Conscious Storage
- 【论文阅读】【SOCC2015】Achieving Cost-efficient, Data-intensive Computing in the Cloud
- 健壮的 Java 基准测试
- 《深入理解JVM.2nd》笔记(三):垃圾收集器与垃圾回收策略
- 垃圾收集器与内存分配策略
- 《深入理解Java虚拟机》-----第3章 垃圾收集器与内存分配策略
- Java基准测试