0

我正在对 JDBC 和 Hibernate(使用 JPA)性能进行基准测试,并连续多次运行相同的查询。我注意到第一个查询(使用 JDBC 和 Hibernate)比其他查询运行时间更长。

我已经禁用了 mysql 缓存,所以我相信它不应该是特定于 mysql 的。可以吗?我还在每个(HQL)查询之间清除 EntityManager。

有人能指出我为什么第一个查询比其他查询花费更长的时间吗?

日志: http: //pastebin.com/fwNbqaMD

谢谢您的反馈

4

2 回答 2

1

我猜是因为您的程序的运行时优化。

在每次运行期间,都会收集代码的分析信息,并且 JIT 优化器会应用优化。

于 2012-05-15T14:15:25.313 回答
1

以下可能是几个可能的原因。

  1. 连接池。
  2. 准备好的陈述。
  3. DB引擎预热/初始化。

在任何一种情况下,第一次迭代都比休息要做的更多。

例如,对于准备好的语句,查询计划是第一次构建并缓存以在后续执行中重用。

于 2012-05-15T14:34:07.613 回答