如果我的代码是将文件的每个单词都读成ArrayList
或HashSet
,那么将代码拆分为多个工作程序threads
并分配每个代码会更快要处理的文件块(假设有多个核心)?我的直觉说不,因为I/O
通常会成为瓶颈,而不是像这样的情况下的CPU。
答案 0 :(得分:3)
常规驱动器的IO通道通常比物理介质本身提供的速度快得多,因此IO不会成为瓶颈。使用磁性媒体(也称为标准硬盘),当磁头寻找你正在阅读的各个地方时,你会让磁盘晃动得像疯了一样。表现将非常糟糕,相当于一辆空车6号高速公路的购物车。
固态驱动器不会受到寻求惩罚的影响,但是它们还没有普及(或者负担得起)足够的数量还没有计算。
答案 1 :(得分:2)
这取决于。由于许多磁盘以串行方式工作,因此您认为IO将成为的瓶颈可能是正确的。但是,如果那个磁盘特别像SSD或RAID那样真的支持并发访问呢?此外,如果需要对数据进行大量的CPU绑定后处理,那么您可以在读取另一批数据的同时进行并发处理。不要这么快就注销并发选项!