当我在Java Hotspot客户端中运行我的计时测试程序时,我得到了一致的行为.但是,当我在Hotspot服务器中运行它时,我得到了意想不到的结果.从本质上讲,在我试图复制的某些情况下,多态性的成本是高得令人无法接受的.
这是Hotspot服务器的已知问题/错误,还是我做错了什么?
测试程序和时间如下:
Intel i7, Windows 8
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
Mine2: 0.387028831 <--- polymorphic call with expected timing
Trivial: 1.545411765 <--- some more polymorphic calls
Mine: 0.727726371 <--- polymorphic call with unexpected timing. Should be about 0.38
Mine: 0.383132698 <--- direct call with expected timing
Run Code Online (Sandbox Code Playgroud)
随着我添加额外的测试,情况变得更糟.列表末尾附近的测试时间完全关闭.
interface canDoIsSquare {
boolean isSquare(long x);
}
final class Trivial implements canDoIsSquare {
@Override final public boolean isSquare(long x) {
if (x > 0) {
long t …Run Code Online (Sandbox Code Playgroud)