gpt4 book ai didi

java - 哪些 JVM 优化导致了这些性能结果?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:24 25 4
gpt4 key购买 nike

<分区>

在 Java REST 服务性能测试中,我得到了一个意想不到的模式:在每次调用中始终创建和返回相同值对象的方法比仅返回存储在类或对象字段中的值对象的另一个版本运行得更快。

代码:

@POST @Path("inline") public Response inline(String s) { 
return Response.status(Status.CREATED).build();
}

private static final Response RESP = Response.status(Status.CREATED).build();
@POST @Path("staticfield") public Response static(String s) {
return RESP;
}

private final Response resp = Response.status(Status.CREATED).build();
@POST @Path("field") public Response field(String s) {
return resp;
}

字节码:

  • 内联(更快):getstatic、invokestatic、invokevirtual、areturn
  • 静态归档(较慢):getstatic,areturn
  • 对象字段(较慢):aload、getfield、areturn

性能(使用 Apache AB,单线程,多次运行结果一致):

  • 内联:17078.29 [#/sec](平均值)
  • 静态字段:5242.64 [#/sec](平均值)
  • 对象字段:5417.40 [#/sec](平均值)

环境:RHEL6 + JDK Oracle 1.7.0_60-b19 64bits

JVM 是否有可能使用 native 代码优化了内联版本,但从未考虑过优化其他两个,因为它们已经非常小了?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com