Multithreading 多线程会加速从磁盘到内存的代码读取吗?

Multithreading 多线程会加速从磁盘到内存的代码读取吗?,multithreading,concurrency,io,Multithreading,Concurrency,Io,如果我有将文件的每个字都读入ArrayList或HashSet的代码,那么将代码拆分为多个辅助线程并为每个线程分配一个文件块(假设有多个内核)会更快吗?我的直觉是否定的,因为在这种情况下,I/O通常是瓶颈,而不是CPU。常规驱动器的IO通道通常比物理介质本身能够提供的速度快得多,所以IO不会成为瓶颈。有了磁介质(又称标准硬盘驱动器),当磁头搜索到你正在阅读的各个地方时,你会让磁盘疯狂地抖动。表现将非常糟糕,相当于一辆购物车在空旷的6车道高速公路上滚动 固态驱动器不会受到寻道惩罚,但它们还不够普及

如果我有将文件的每个字都读入
ArrayList
HashSet
的代码,那么将代码拆分为多个辅助线程
并为每个线程分配一个文件块(假设有多个内核)会更快吗?我的直觉是否定的,因为在这种情况下,I/O通常是瓶颈,而不是CPU。

常规驱动器的IO通道通常比物理介质本身能够提供的速度快得多,所以IO不会成为瓶颈。有了磁介质(又称标准硬盘驱动器),当磁头搜索到你正在阅读的各个地方时,你会让磁盘疯狂地抖动。表现将非常糟糕,相当于一辆购物车在空旷的6车道高速公路上滚动


固态驱动器不会受到寻道惩罚,但它们还不够普及(或负担得起),还不足以发挥重要作用。

常规驱动器的IO通道通常比物理介质本身提供的速度快得多,因此IO不会成为瓶颈。有了磁介质(又称标准硬盘驱动器),当磁头搜索到你正在阅读的各个地方时,你会让磁盘疯狂地抖动。表现将非常糟糕,相当于一辆购物车在空旷的6车道高速公路上滚动


固态硬盘不会受到seek惩罚,但它们还不够普及(或负担得起),还不足以发挥重要作用。

视情况而定。您认为IO将成为瓶颈的想法可能是正确的,因为很多磁盘都是以串行方式工作的。但是,如果该磁盘像SSD或RAID那样特殊,确实支持并发访问,该怎么办?此外,如果需要对数据进行大量CPU限制的后期处理,那么您可以在读取另一批数据时同时进行这些处理。不要这么快注销并发选项

视情况而定。您认为IO将成为瓶颈的想法可能是正确的,因为很多磁盘都是以串行方式工作的。但是,如果该磁盘像SSD或RAID那样特殊,确实支持并发访问,该怎么办?此外,如果需要对数据进行大量CPU限制的后期处理,那么您可以在读取另一批数据时同时进行这些处理。不要这么快注销并发选项

“常规驱动器的IO通道通常比物理介质本身提供的速度快得多,因此IO不会成为瓶颈。”-为什么?3Gbps和6Gbps SATA接口比标准驱动器从介质中物理吸收的速度快得多。最新的SSD,特别是带有Sandforce控制器的SSD,实际上可以接近(或超过)3Gbps。在SAN/NAS的情况下如何?视情况而定。SAN可以很大,但不一定很快。NAS也是如此。NAS通常是通过以太网实现的,因此除了硬件限制外,还有网络开销。“常规驱动器上的IO通道通常比物理介质本身提供的速度快得多,因此IO不会成为瓶颈。”-为什么?3Gbps和6Gbps SATA接口比标准驱动器从介质中实际吸取的速度快得多。最新的SSD,特别是带有Sandforce控制器的SSD,实际上可以接近(或超过)3Gbps。在SAN/NAS的情况下如何?视情况而定。SAN可以很大,但不一定很快。NAS也是如此。NAS通常是通过以太网完成的,所以除了硬件限制之外,您还有网络开销。