1

我正在创建一个小型 Java Web 应用程序,我在其中定义了一个路由文件,该文件为每个操作指定应执行的控制器方法。

为了做到这一点,我解析了这个路由文件,并在我的主 Servlet 中,根据收到的调用,我使用反射来调用所需的方法。

但是,Java 反射会导致性能开销(基于 JVM 等)。

因此,我想问一下,这是否是正确的程序,或者是否有另一种选择来执行此类任务。

提前非常感谢!

4

2 回答 2

4

在这种情况下,通过反射调用方法的性能开销可以忽略不计:我估计反射方法调用将花费大约 0.1 微秒,而客户端和服务器之间的网络延迟很容易达到 10 毫秒。也就是说,不到 0.001% 的响应时间是由于反射开销造成的。

带回家的信息:当被告知某事“慢”时,请始终询问“与什么相比”,并在优化性能之前尝试评估它是否可能产生可衡量的性能影响。(如果你有一个实际的性能问题要解决,测量你的程序的哪些部分是慢的,优化那些 - 然后再次测量)。

于 2012-08-26T20:55:34.493 回答
0

反射似乎是动态路由的一种方法,并且向开发人员提供良好的反馈,所有这些都在快速的开发/测试周期中。

作为消除开销的替代方法,可以想象有一个“编译”步骤,该步骤将从路由文件中生成 Java 代码。但我个人不建议这样做。

在任何情况下,如果没有进行衡量,就规定性能是一个问题似乎还为时过早。

于 2012-08-26T20:15:13.277 回答