for (Object candidate : someSet)
if (someOtherSet.contains(candidate))
// 即使采取Java 8也没有很大年夜赞助
result.add(candidate);
someSet.stream()
.filter(someOtherSet::contains)
.collect(Collectors.toSet());
有些人可能会对函数式编程和Java 8能赞助我们写出加倍简单、简洁的算法持有不合的看法。但这种看法不必定是对的。我们可以把敕令式的Java 7轮回转换成Java 8的Stream collection,然则我们照样采取了雷同的算法。但SQL风格的表达式则是不合的:
SomeSet INTERSECT SomeOtherSet
膳绫擎的代码在不合的引擎上可以有1000种不合的实现。我们今天所研究的是,在调用 INTERSECT 操作之前,加倍智能地将两个set主动的转化为 EnumSet 。甚至我们可以在不须要调用底层的 Stream.parallel() 办法的情况下进行并行 INTERSECT 操作。
总结
在这篇文┞仿中,我们评论辩论了关于N.O.P.E.分支的优化。比瘸李入嘉宾杂性的算法。作为jOOQ的开辟者,我们很乐于对SQL的生成进行优化。
-
每条萌芽都用独一的StringBuilder来生成。
-
模板引擎实际上处理的是字符而并非正则表达式。
-
选择尽可能的应用数组,尤其是在对监听器进行迭代时。
-
对JDBC的办法敬而远之。
-
等等。
jOOQ处在“食物链的底端”,因为它是在分开JVM进入到DBMS时,被我们电脑法度榜样所调用的最后一个API。位于食物链的底端意味着任何一条线路在jOOQ中被履行时都须要 N x O x P 的时光,所以我要尽早进行优化。
我们的营业逻辑可能没有N.O.P.E.分支那么复杂。然则基本框架有可能十分复杂(本地SQL框架、本地库等)。所以须要按照我们今天提到的原则,用Java Mission Control 或其它对象进行复查,确认是否有须要优化的处所。
推荐阅读
2017年架构师最重要的48个小时 | 8折倒计时 一、大年夜主动化需求说起对于这个问题,秉承实在用主义的精力,我本来也不会去深究。毕竟,安装的时刻会设置暗码,安装完毕后能经由过程passwd>>>详细阅读
本文标题:Java程序员应知道的十条Java优化策略,让你的系统健步如飞
地址:http://www.17bianji.com/lsqh/38303.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示