Java 参数化BeanPropertyRowmapper';谁的表演成功了?
javadoc说: 请注意,该类旨在提供方便而不是高性能。最佳性能考虑使用自定义ROMMAPPER。Java 参数化BeanPropertyRowmapper';谁的表演成功了?,java,performance,spring,Java,Performance,Spring,javadoc说: 请注意,该类旨在提供方便而不是高性能。最佳性能考虑使用自定义ROMMAPPER。 它在现实世界中有多慢?我从未对它进行过基准测试,因为我从未发现它是一个特别的瓶颈。一个不使用反射的自定义行映射器会更快,但我从来没有在我的应用程序中看到过值得担心的成功。如果你正在开发一款性能极高的应用程序,那么它可能值得一看,但在大多数情况下,我认为它的便利性值得一试 查看基类AbstractBeanPropertyRowMapper的源代码可以发现,在第一次通过映射器访问该类之后,许多反射样
它在现实世界中有多慢?我从未对它进行过基准测试,因为我从未发现它是一个特别的瓶颈。一个不使用反射的自定义行映射器会更快,但我从来没有在我的应用程序中看到过值得担心的成功。如果你正在开发一款性能极高的应用程序,那么它可能值得一看,但在大多数情况下,我认为它的便利性值得一试
查看基类AbstractBeanPropertyRowMapper的源代码可以发现,在第一次通过映射器访问该类之后,许多反射样式的代码都会被缓存。我无法想象会有任何真正的性能问题。快速查看:使用反射调用方法会从一开始就给您带来性能上的提升。在这种情况下,您要将性能受到的影响乘以来自数据库的结果数。如果您的数据将增长,并且您将经常查询它,请考虑使用参数化ReaveMappor代替.< /P> 在过去,我不得不放弃使用reflection happy便利库,因为基准测试表明,它将100毫秒的用户查找时间缩短到了大约3秒。使用Yourkit评测mapRow方法的结果: 结论:
从结果集中读取一行时,大约11毫秒被保存。这意味着读取100条记录时会保存1“虚拟”秒。把这个数字乘以用户数,你就知道了。ParameterizedBeanPropertyRowMapper只能在客户端机器上运行的小型应用程序(桌面应用程序)中有效使用。对于我来说,在周末使用cpu profiler是一项不错的任务。出于好奇,您在哪个版本的JRE中进行了基准测试?Java(TM)SE运行时环境(build 1.6.0_17-b04-248-10M3025)Java热点(TM)mac上的64位服务器VM(构建14.3-b01-101,混合模式)
Custom row mapper:
186 ms (invocation count 224 (weird...))
ParameterizedBeanPropertyRowMapper:
1301 ms (invocation count 112)