8.1.3线程数的合理设置

既然使用多线程计算可以提高计算效率,那么是不是线程越多越好呢?我们可以来实验一下:

 

A

B

1

=file("PersonnelInfo.txt")

 

2

=now()

 

3

fork to(4)

=A1.import@t(;A3:4)

4

 

return B3.select(City=="San Diego")

5

=A3.conj()

=interval@ms(A2,now())

6

 

 

7

=now()

 

8

fork to(400)

=A1.import@t(;A8:400)

9

 

return B8.select(City=="San Diego")

10

=A8.conj()

=interval@ms(A7,now())

在这里,2~5行使用多线程计算,分4个线程完成计算。7~10行同样使用多线程计算,不过使用了400个线程完成计算。在A5A10中获得的结果,和上一节中的情况结果都是相同的。

现在来查看B5B10中估算的计算耗时:

 

可以发现,虽然在A8中的多线程计算使用了非常多的线程,但是计算效率不但没有明显的提升,耗时还变多了。这是由于,系统空闲的CPU是有限的,过多的线程仍然需要等待顺次计算,往往不但无法提升效率,反而由于线程本身需要占用一定的资源,而造成速度变慢。在实际使用中,线程数略小于系统的CPU核数就可以获得比较好的性能了。