00:00
哎,集合这一部分的最后,我们再来介绍另外一个scla当中比较有特色的概念,叫做并行集合。啊,那这个概念的提出主要是scla为了充分利用多核CPU,提供了一种并行计算的可能,让集合直接在多核环境里边执行并行计算,之前我们提到的那些集合操作呢,其实默认都是属于串行的一个计算,我们知道在大数据的应用领域里边,尽量是要利用多核CPU的并行处理能力的,叫做并行计算和分布式计算,所以盖拉的提供的这种特性。也是天生就适合应用在大数据的场景下啊,那接下来我们就简单的做一个测试,看看到底应该怎么用。还是新建一个的object。当前S20这个是定型处理parallel先我们先来测试一下。
01:06
不是并行计算的集合,得到的结果应该是什么样的啊,我们这个就简单的做一个测试吧,干脆就直接用一个range作为一个集合,我们不用list了啊,那range大家知道,最简单的定义就是直接一一百,它就是一个range本身是一个index seek啊,带索引序列,有了它之后,前面我们讲了集合的一些转换操作就直接可以一个map处理了啊,那比方说这里边我们map就一个定的拉的表达式啊呃,这里边我们可以写一个。当前的,呃,因为当前我们并没有要对这里的数据做什么样的操作,哎,所以非常简单,直接就是想要获取到对应,比方说啊,我们想要看现在这个执行的线程的名称,所以我就干脆直接返回当前的,比方说我们这个当前的数据啊,我们要返回的呢,它就没关系,我们直接返回。
02:08
Ad ort。Red,当前的这个N。或者我们改成ID也可以啊,先把这个做一个获取,然后我们把当前这个就叫做。呃,这里最终我们得到的应该是一个imutable的index seek啊。这里边我们把这个名称改成一个result吧。先来执行一下,并起来给你看一看到底是什么样的一个效果。啊,大家可以看到这里边我们输出的这个名称都是may啊,所以就相当于都是我们在这个主程序里边一遍一遍去做操作的,而且我们也知道index seek这个treat特征,它的默认的实现就是vector,对吧,所以我们这里面返回的是一个vector啊,那如果说这里面我们是ID的话。
03:09
哎,这里边到这个就变成一个long长整形了。接下来我们直接运行一下。我们会看到直接返回的ID都是一,那这个没有任何的悬念。那接下来我们就。看一看是串行集合的执行啊,那如果要是并行计算,得到的又会是一个什么样的效果?把这个直接copy下来,首先我们定义一个RESULT2,那如果要是并行集合的计算呢?别的操作都可以定义的一样,只不过就是得到一个集合类型之后在后面我们来一个一二。这样的一个表达式,这就表示我们得到的是一个要做的一个并行计算啊,大家看得到一个PAR对吧。所以我们可以把这个类型直接删掉,这里可以直接做一个编译器的自动类型的判断啊,大家看到还有就是一个basic。
04:07
我们把这个RESULT2还是付给他。接下来我们运行一下,你看当前的ID是什么样的,大家可以看到当前执行线程的ID就有所不同了,这里边有很多不同的线程在做执行,得到对应的这个结果呢,叫做part vector啊,都是并行相对应的一个集合类型,这就是关于并行执行的这个过程,大家可以下来之后自己也做一个测试。
我来说两句