我正在创建一个小型Java Web应用程序,我在其中定义了一个路由文件,该文件为每个操作指定了应该执行的控制器的方法。
为了做到这一点,我解析了这个路由文件,并在我的主Servlet中,根据收到的调用,我使用反射来调用所需的方法。
但是,Java反射会导致性能开销(基于JVM等)。
因此,我想问一下,如果这是正确的程序,或者还有另一种方法可以执行这样的任务。
提前多多感谢!
答案 0 :(得分:4)
在这种情况下,通过反射调用方法的性能开销可以忽略不计:我估计反射方法调用大约需要0.1微秒,而客户端和服务器之间的网络延迟很容易为10毫秒。也就是说,响应时间的不到0.001%是由于反射开销造成的。
带回家信息:当被告知事情“慢”时,总是问“与什么相比”,并尝试评估在优化性能之前是否可以产生可衡量的性能影响。 (如果您要解决实际性能问题,请测量程序的哪些部分很慢,优化这些部分 - 然后再次测量)。
答案 1 :(得分:0)
反射似乎是动态路由并向开发人员提供良好反馈的一种方式,所有这些都在快速开发/测试周期中进行。
作为删除开销的替代方法,可以想象有一个“编译”步骤,它将从路由文件中生成Java代码。但我个人不建议这样做。
在任何情况下,如果没有对其进行测量,那么规定性能是一个问题似乎为时过早。