Java 注解会不会因为反射导致性能变慢?
Will Java Annotations make the performace slow because of reflection?
如果我们使用Java注解,是否每次都会调用反射api来分析这些注解?这不会使执行变慢吗?
我的意思是每当执行该流程时。
示例案例:
在 Jersey 中,我们使用 @Get 注释,每次在服务器上有一个 get 请求时都会使用它。这是否意味着对于每个 get 请求,反射 api 都会分析该注释的 class?
性能是相对的。如果您使用反射来执行简单的数学运算,速度会很慢。但是如果您处理网络请求,反射开销应该可以忽略不计。
Class 注释在 class 加载期间仅分析一次。之后,它们存储在 JVM 数据结构中,访问它们的成本相对较低。
我不知道 Jersey 的内部结构,但是我使用过的其他框架 - 其中一些能够优化注释处理部分,或者通过缓存,and/or 通过在创建长期服务的实例。
这是 "Tagir Valeev" 正确注释的补充,与 I/O 延迟相比,注释处理可以忽略不计。
如果我们使用Java注解,是否每次都会调用反射api来分析这些注解?这不会使执行变慢吗?
我的意思是每当执行该流程时。
示例案例: 在 Jersey 中,我们使用 @Get 注释,每次在服务器上有一个 get 请求时都会使用它。这是否意味着对于每个 get 请求,反射 api 都会分析该注释的 class?
性能是相对的。如果您使用反射来执行简单的数学运算,速度会很慢。但是如果您处理网络请求,反射开销应该可以忽略不计。
Class 注释在 class 加载期间仅分析一次。之后,它们存储在 JVM 数据结构中,访问它们的成本相对较低。
我不知道 Jersey 的内部结构,但是我使用过的其他框架 - 其中一些能够优化注释处理部分,或者通过缓存,and/or 通过在创建长期服务的实例。
这是 "Tagir Valeev" 正确注释的补充,与 I/O 延迟相比,注释处理可以忽略不计。