Ass*_*vie 5 io optimization performance file
您可以通过多线程使文件复制更快吗?
编辑:为了澄清,假设您正在实施 CopyFile(src, tgt)。在某些情况下,您可以使用多个线程来使其运行得更快,这似乎是合乎逻辑的。
编辑一些更多的想法:
当然,这取决于相关的硬件/存储。
例如,如果您从一个磁盘复制到另一个磁盘,很明显您可以使用两个线程同时读/写,从而节省了两个线程中最快的(通常是读取)的性能成本。但是你真的不需要多个线程来并行读/写,只需要异步IO。
但是,如果 async-IO 在从不同磁盘读取/写入时确实可以加快速度(高达 2 倍),为什么这不是 CopyFile 的默认实现?(或者是吗?)
您可以看到一个好处,特别是如果文件位于不同的设备上,在这种情况下,I/O 可以非常有效地重叠。
然而,在某些情况下,你很容易导致硬件崩溃,所以我认为这是一个不应该掉以轻心的优化。
至于您添加的附加问题:
但是,如果 async-IO 在从不同磁盘读取/写入时确实可以加快速度(高达 2 倍),那么为什么这不是 CopyFile 的默认实现呢?(或者是吗?)
我不知道 的内部结构CopyFile(),但如果他们出于以下几个原因不这样做,我不会感到惊讶:
这并不是说它不能或不应该完成(或者甚至没有完成 - 我不知道) - 这些只是可能无法完成的几个可能原因。