我正在对JDBC和Hibernate(带JPA)性能进行基准测试,并连续多次运行相同的查询。我注意到第一个查询(使用JDBC和Hibernate)比其他查询运行的时间更长。
我已经禁用了mysql缓存,所以我相信它不应该是特定于mysql的。可能吗? 我还清除了每个(HQL)查询之间的EntityManager。
有人能指出为什么第一个查询需要的时间比其他查询要长吗?
记录:http://pastebin.com/fwNbqaMD
感谢您的回复
答案 0 :(得分:1)
我猜是因为你的程序运行时优化了。
在每次运行期间,都会收集代码的分析信息,JIT优化器会应用优化。
答案 1 :(得分:1)
以下几种可能的原因。
在任何一种情况下,第一次迭代都会比休息更多。
例如,对于预准备语句,查询计划是第一次构建的,并在后续执行中进行缓存以便重用。