Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 参数化BeanPropertyRowmapper';谁的表演成功了?_Java_Performance_Spring - Fatal编程技术网

Java 参数化BeanPropertyRowmapper';谁的表演成功了?

Java 参数化BeanPropertyRowmapper';谁的表演成功了?,java,performance,spring,Java,Performance,Spring,javadoc说: 请注意,该类旨在提供方便而不是高性能。最佳性能考虑使用自定义ROMMAPPER。 它在现实世界中有多慢?我从未对它进行过基准测试,因为我从未发现它是一个特别的瓶颈。一个不使用反射的自定义行映射器会更快,但我从来没有在我的应用程序中看到过值得担心的成功。如果你正在开发一款性能极高的应用程序,那么它可能值得一看,但在大多数情况下,我认为它的便利性值得一试 查看基类AbstractBeanPropertyRowMapper的源代码可以发现,在第一次通过映射器访问该类之后,许多反射样

javadoc说:

请注意,该类旨在提供方便而不是高性能。最佳性能考虑使用自定义ROMMAPPER。


它在现实世界中有多慢?

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


查看基类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)