두 솔루션 모두 200 개의 파일을 복사하려고했지만 차이점을 보지 못했습니다 (시간을 측정하기 위해 System.Diagnostics.Stopwatch
을 사용했습니다). 두 경우 모두 8 초가 걸렸습니다. 두 번째 (병렬) 솔루션이 더 빠르지 않아야합니까? Parallel을 사용하는 IO 작업은 복사본 속도를 높이기 때문에 생각했습니다.파일을 병렬로 복사하고 병렬로 복사하지 않아도되는지 여부
내가 무엇이 누락 되었습니까?
// Case1 - Regular iteration
foreach (FileInfo file in files)
{
string temppath = Path.Combine(destDirName, file.Name);
file.CopyTo(temppath, false);
}
// Case2 - Parallel
Parallel.ForEach(files, file =>
{
string temppath = Path.Combine(destDirName, file.Name);
file.CopyTo(temppath, false);
});
실제로 디스크 IO를 병렬화하면 ** 느려질 가능성이 높아집니다 **. 동시에 두 개의 파일을 복사 할 때 디스크는 두 파일 (즉 완전히 다른 위치)에서 읽어야합니다. 디스크를 하나씩 복사 할 때 디스크가 다른 영역을 많이 읽지 않아도 각 파일을 완전히 읽을 수 있습니다. – ThiefMaster
대기 시간이 긴 네트워크 드라이브로 시도해 볼 흥미로운시기 일 수 있습니다. –
및 풀에서 구성 가능한 수의 스레드가 사용됩니다. –