第一件事:总是(不仅在NOPE 分支中)提前中止每个equals()方法,如果:
- this == argument
- this "incompatible type" argument
- com.example.generated.Tables.MY_TABLE
- DSL.tableByName("MY_OTHER_TABLE")
10、在集合中思考,而不是在单个元素最后但并非最不重要的一点是,有一件事与 Java 无关,但适用于任何语言 。此外,我们将离开N.O.P.E.分支,因为此建议可能只会帮助您从 迁移到,或类似的东西 。不幸的是,许多程序员从简单的本地算法的角度来思考 。他们正在逐步解决问题,一个分支一个分支,一个循环一个循环,一个方法一个方法 。这就是命令式和/或函数式编程风格 。虽然在从纯命令式到面向对象(仍然是命令式)再到函数式编程时,对“更大的图景”进行建模变得越来越容易,但所有这些风格都缺乏只有 SQL 和 R 以及类似语言才有的东西:声明式编程 。在 SQL 中(我们喜欢它,因为这是O(N3)O(n log n)) 你可以声明你想从你的数据库中得到的结果,而不会对算法产生任何影响 。然后,数据库可以考虑所有可用的元数据(例如约束、键、索引等),以找出可能的最佳算法 。从理论上讲,这从一开始就是SQL 和关系演算背后的主要思想 。使用集合的主要优点是您的算法将变得更加简洁 。
而不是:
// Pre-Java 8Set result = new HashSet();for (Object candidate : someSet)if (someOtherSet.contains(candidate))result.add(candidate); // Even Java 8 doesn't really helpsomeSet.stream().filter(someOtherSet::contains).collect(Collectors.toSet());
有些人可能会争辩说,函数式编程和 Java 8 将帮助您编写更简单、更简洁的算法 。这不一定是真的 。您可以将命令式 Java-7 循环转换为功能性 Java-8 Stream 集合,但您仍在编写相同的算法 。编写类似 SQL 的表达式是不同的 。SomeSet 相交 SomeOtherSet
可以通过实现引擎以 1000 种方式实现 。EnumSet正如我们今天所了解的,在运行操作之前将这两个集合自动转换为明智的做法INTERSECT 。也许我们可以在INTERSECT不进行低级调用的情况下将其并行化Stream.parallel()
11、结论在本文中,我们讨论了在N.O.P.E.分支上进行的优化,即在高复杂度算法的深处 。
- 每个查询仅在单个上生成StringBuilder
- 我们的模板引擎实际上是解析字符,而不是使用正则表达式
- 我们尽可能使用数组,尤其是在迭代侦听器时
- 我们远离我们不必调用的 JDBC 方法
- 等等…
作者:终码一生
链接:
https://juejin.cn/post/7078286560034029575
【Java 中 10 大简单的性能优化】
推荐阅读
- 生肖|2022年,鸿运高照,职场机遇多,前景可观,前程似锦的三大生肖
- |有报告称中高端人才的职场危机年龄早于 35 岁,真是这样的吗?
- 乐视|乐视发布九大声明 调侃:活到今天“何止是奇迹简直不科学”
- 网友热议|上海大爷在江景房阳台钓到8斤大鱼 网友:这房买值了
- 中海地产怎么样?中海物业管理的优势
- 十大男装皮衣品牌
- 事业遇贵人的四大属相是什么?
- 大学绩点2.5很差吗?
- 徐凤年打败北莽了吗?
- 布朗红大树红茶的泡法,国艳普洱茶布朗大树