두 개의 간단한 루프를 작성했습니다.Parrallel.For 루프가보다 느리게 실행됩니다
sw.Restart();
Parallel.For(0,1000000,i =>
{
Console.WriteLine(i);
});
sw.Stop();
Console.WriteLine(sw.Elapsed);
불행하게도, 그것은 첫째을 위해 53 초 정도 걸립니다 :
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < 1000000; i++)
{
Console.WriteLine(i);
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
Console.ReadKey();
두 번째로 빠른 것으로 가정 Parrallel.For을 사용하고 있습니다 :
하나 '에 대한'표준을 사용하고 실행하고 약 1 분 50 초 두 번째로 (!!!).
왜 내가 잘못 했습니까?
을 콘솔에 쓰려면 스레드가 동기화되어야하기 때문에? 대신 실제 작업을 해보십시오. – GSerg
처음에는 콘솔에 쓰기 작업 대신 db 쓰기 작업이 있었지만 느린 작업을 수행했습니다. – ohadinho
글쎄, db는 잠금/동기화를 발생시키는 공유 리소스이기도합니다. 이점을 얻으려면 병렬 코드에서 이러한 자원을 피하십시오. – GSerg