File tree 1 file changed +2
-2
lines changed
1 file changed +2
-2
lines changed Original file line number Diff line number Diff line change 12
12
13
13
性能测试并不是容易的事,Java性能测试更费劲,因为虚拟机对性能的影响很大,JVM对性能的影响有两方面:
14
14
15
- 1 . GC的影响。GC的行为是Java中很不好控制的一块,为增加确定性,我们手动指定使用CMS收集器,并使用10GB固定大小的堆内存。集体到JVM参数就是 ` -XX:+UseConcMarkSweepGC -Xms10G -Xmx10G `
15
+ 1 . GC的影响。GC的行为是Java中很不好控制的一块,为增加确定性,我们手动指定使用CMS收集器,并使用10GB固定大小的堆内存。具体到JVM参数就是 ` -XX:+UseConcMarkSweepGC -Xms10G -Xmx10G `
16
16
2 . JIT(Just-In-Time)即时编译技术。即时编译技术会将热点代码在JVM运行的过程中编译成本地代码,测试时我们会先对程序预热,触发对测试函数的即时编译。相关的JVM参数是` -XX:CompileThreshold=10000 ` 。
17
17
18
18
Stream并行执行时用到` ForkJoinPool.commonPool() ` 得到的线程池,为控制并行度我们使用Linux的` taskset ` 命令指定JVM可用的核数。
@@ -107,4 +107,4 @@ Stream并行执行时用到`ForkJoinPool.commonPool()`得到的线程池,为
107
107
108
108
所以,如果出于性能考虑,1. 对于简单操作推荐使用外部迭代手动实现,2. 对于复杂操作,推荐使用Stream API, 3. 在多核情况下,推荐使用并行Stream API来发挥多核优势,4.单核情况下不建议使用并行Stream API。
109
109
110
- 如果出于代码简洁性考虑,使用Stream API能够写出更短的代码。即使是从性能方面说,尽可能的使用Stream API也另外一个优势,那就是只要Java Stream类库做了升级优化,代码不用做任何修改就能享受到升级带来的好处。
110
+ 如果出于代码简洁性考虑,使用Stream API能够写出更短的代码。即使是从性能方面说,尽可能的使用Stream API也另外一个优势,那就是只要Java Stream类库做了升级优化,代码不用做任何修改就能享受到升级带来的好处。
You can’t perform that action at this time.
0 commit comments