isAnnotationPresent vs getDeclaredAnnotation!= null

问题描述 投票:-1回答:1

看看在isAnnotationPresent类中找到的Method方法,它所做的就是使用它的参数调用getDeclaredAnnotation并检查它的无效性。

如果我使用isAnnotationPresent(...)而不是getDeclaredAnnotation(...) != null来验证是否存在注释,它是否会影响性能?

java performance annotations
1个回答
0
投票

你应该总是使用你需要的方法,即isAnnotationPresent。它的可读性显然更好,有时甚至可能更好。

不看代码,最简单的实现是什么?显然,测试getDeclaredAnnotation(...) != null。那么你会失去什么?一种方法调用。方法调用成本很高,但无论何时重要,它们都会被内联,因此它们基本上是免费的。你不能输。

在这种情况下,你很可能也无法获胜,如果可以的话,只需要很难衡量数量。

但想象一下类似的收藏案例:isEmpty() vs. size() == 0。对于某些花哨的集合,后者可能成本更高,例如,一些有趣的链表或由数据库支持的集合。实际上,SELECT COUNT(*) ...通常比IF EXISTS(...)慢。

因此,请始终选择更简单/更易读的解决方案。性能方面它通常无关紧要,什么时候开始,你可能会获益。

唯一值得提前做的优化是关于算法的复杂性(例如,你肯定不想做冒泡排序)。

© www.soinside.com 2019 - 2024. All rights reserved.