Java十大简单性能优化(23)

第一件事:始终(不仅在NOPE分支中)equals()提前终止所有方法 , 如果:

·this == argument

·this \"incompatible type\" argument

请注意argument == null , 如果您要instanceof检查兼容类型 , 则后一个条件包括 。 之前我们在“编码Java的10个微妙的最佳实践”中已经对此进行过博客撰写 。

现在 , 在明显的情况下尽早中止比较之后 , 您可能还想在做出部分决策时就中止比较 。 例如 , jOOQ的契约是要使Table.equals()两个表相等 , 无论具体的实现类型如何 , 它们都必须具有相同的名称 。 例如 , 这两个项目不可能相等:

·com.example.generated.Tables.MY_TABLE

·DSL.tableByName(\"MY_OTHER_TABLE\")

如果argument不能等于this , 并且我们可以轻松地进行检查 , 那么我们可以进行检查 , 如果检查失败 , 则中止检查 。 如果检查成功 , 我们仍然可以从开始进行更昂贵的实现super 。 鉴于Universe中的大多数对象不相等 , 我们将通过简化此方法来节省大量CPU时间 。

推荐阅读