parallelStream并行执行的流使用经验

应用场景/主要解决问题

主要利用并行计算解决,全省地灾气象预警计算效率问题。我们设计格网模型集合,加载到内存中,每一步分析直接并行操作格网集合,避免频繁读取更新数据库,因网络IO,数据库IO 瓶颈效率低下。

还有一个关键问题,内存中的中间结果,分析结果怎样实时利用GIS平台发布,下一篇介绍。

内容描述

什么任务适合并行:

CPU密集型的任务来说,并行流使用ForkJoinPool,为每个CPU分配一个任务,这是非常有效率的,但是如果任务不是CPU密集的,而是I/O密集的,并且任务数相对线程数比较大,那么直接用ParallelStream并不是很好的选择,例如写文件,查询数据库就不太适合。

parallelStream并行执行的流使用经验_第1张图片

应用场景影响并行流的主要七个因素

1 数据大小

输入数据的大小会影响并行化处理,当只有足够大、每个数据处理管道花费的时间足够多时,并行化才有意义

2 源数据结构

一般都是基于集合进行并行化

3 装箱

处理基本类型比处理装箱类型要快

4 cpu核的数量

只有在多核的机器上使用才有意义,并且是运行时能够使用的多少核

5 单元处理开销

原先处理耗时较长,使用并行化才有意义

6 任务之间最好是状态无关的,因为parallelStream默认是非线程安全的,可能带来结果的不确定性。

7 并行执行无序

截图(如有)

时间单位毫秒,明显提升27,226毫秒。

parallelStream并行执行的流使用经验_第2张图片

你可能感兴趣的:(GIS,架构,spring,boot,spring,设计模式)