ParameterizedBeanPropertyRowMapper的性能如何可以忽略不计?

时间:2009-12-04 13:24:26

标签: java performance spring

javadoc说:

  

请注意,此课程旨在提供便利而非高性能。为了获得最佳性能,请考虑使用自定义RowMapper。

在现实世界中它有多慢?

3 个答案:

答案 0 :(得分:3)

使用反射调用方法可以让您从一开始就获得性能。在这种情况下,您将性能命中数乘以来自数据库的结果数。如果您的数据会增长并且您将经常查询它,请考虑使用ParameterizedRowMapper。

在过去,我不得不退出使用反射快乐的便利库,因为基准测试显示它将用户长达100毫秒的时间调整为大约3秒。

答案 1 :(得分:2)

我从未对它进行过基准测试,因为我从来没有发现它是一个特殊的瓶颈。不使用反射的自定义RowMapper会更快但我从来没有在我的应用程序中看到过值得担心的打击。如果你正在做一个性能极高的应用程序,那么它可能值得一看,但在大多数情况下,我认为便利性值得忽略不计。

查看基类的源代码AbstractBeanPropertyRowMapper表明,在第一次通过该映射器访问类之后,很多反射式代码都会被缓存。我无法想象有任何真正的性能问题。快速查看:http://www.java2s.com/Open-Source/Java-Document/J2EE/spring-framework-2.5/org/springframework/jdbc/core/AbstractBeanPropertyRowMapper.java.htm

答案 2 :(得分:2)

使用Yourkit分析 mapRow 方法的结果:

Custom row mapper:
186 ms (invocation count 224 (weird...))
ParameterizedBeanPropertyRowMapper:
1301 ms (invocation count 112)

结论:

从结果集中读取一行时,保存约 11毫秒。这意味着在读取100条记录时会保存1“虚拟”秒。将其与用户数量相乘,您就会明白这一点。 ParameterizedBeanPropertyRowMapper只能在客户端计算机(桌面应用程序)上运行的小型应用程序中有效使用。