Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 使用多个线程读取CSV文件值得吗?_Multithreading_Performance_Csv_Parsing_Optimization - Fatal编程技术网

Multithreading 使用多个线程读取CSV文件值得吗?

Multithreading 使用多个线程读取CSV文件值得吗?,multithreading,performance,csv,parsing,optimization,Multithreading,Performance,Csv,Parsing,Optimization,我刚刚注意到,GitHub上流行的仅头文件库默认使用多个线程从磁盘读取CSV文件,我想知道这对典型的硬件有什么好处 假设文件位于单个HDD或SSD上 通过顺序读取,磁盘带宽似乎达到了最大化 占用单核的单线程应该能够完成足够的计算和内存写入,以跟上SSD的带宽(现在三星960的带宽为3.5 MB/秒,甚至DDR3在单插槽上的带宽也超过10 GB/秒,而今天的消费类硬件可以轻松地超过25 GB/秒) 我甚至不确定2个线程,加上超线程的效果,是否真的会有很大帮助 是我计算错了,还是多线程CSV读取

我刚刚注意到,GitHub上流行的仅头文件库默认使用多个线程从磁盘读取CSV文件,我想知道这对典型的硬件有什么好处

假设文件位于单个HDD或SSD上

  • 通过顺序读取,磁盘带宽似乎达到了最大化
  • 占用单核的单线程应该能够完成足够的计算和内存写入,以跟上SSD的带宽(现在三星960的带宽为3.5 MB/秒,甚至DDR3在单插槽上的带宽也超过10 GB/秒,而今天的消费类硬件可以轻松地超过25 GB/秒)
我甚至不确定2个线程,加上超线程的效果,是否真的会有很大帮助


是我计算错了,还是多线程CSV读取仅适用于更奇特的场景(RAM模拟磁盘分区/缓存在内存中的文件/多个磁盘等)?

可能是针对从网络读取进行了优化?如果不是的话,它的设计就太过复杂了。@rustyx:在它的辩护中,我会说你可以使用预处理器定义来禁用多线程的使用。