0

다른 스레드에서 병렬 실행으로 장기 실행 작업을 실행하면 PC에 여러 프로세서 코어가있는 경우 성능이 크게 향상된다는 것을 읽었습니다. C#에는 함수 Parallel.ForEach이 있습니다.이 함수는 각 프로세서 코어에서 실행되는 별도의 스레드에서 장시간 실행되는 작업을 분할합니다. 비록 하나의 코어 만 있다면이 기능은 단순한 Foreach 루프 (동기식)로 실행됩니다. 또한 프로세서 코어보다 많은 스레드를 생성하는 경우에도 부정적인 영향을 미칠 수 있습니다.장기 실행 작업을 별도의 프로세스로 분할하여 프로그램 성능 향상

별도의 콘솔 응용 프로그램을 만들려고하는데 args을 전달하고 start -WindowStyle Hidden SeparateProcess.exe과 같은 여러 프로세스에서 .exe를 실행하십시오.

편집 : 나는 이미 그런 다음이

class Program 
{ 
    static void Main(string[] args) 
    { 
     for (int i = 0; i < 100; i++) 
     { 
      Thread.Sleep(200); 
      Console.WriteLine("" + i); 
     } 
     Console.WriteLine(); 
     Console.WriteLine(Guid.NewGuid() + ": Process finalized."); 
    } 
} 

같은 콘솔 응용 프로그램을 만들어
가 사용 PowerShell을 그것을 실행 여러 번 : 하나에 실행할 때

For ($i=0; $i -lt 10; $i++){ 
start -WindowStyle Normal SeparateProcess.exe 
} 

이 프로그램의 성능이 향상됩니다 핵심?

참고 : 장기 실행 작업은 Emgu CV 이미지 컴퓨팅 알고리즘입니다.

+0

다중 스레드는 다중 코어를 사용하는 것만을위한 것이 아닙니다. 응용 프로그램과 해당 스레드가 수행하는 작업에 따라 단일 코어 시스템에서 실행되는 다중 스레드 응용 프로그램이 단일 코어에서 실행되는 단일 스레드 응용 프로그램보다 여전히 더 효과적 일 수 있습니다. 여러 프로세스의 한 가지 단점은 메모리 또는 리소스를 공유 할 수 없으며 여러 스레드가있는 단일 프로세스가 공유 할 수 있다는 것입니다. – RavB

+0

당신의 프로세스는 CPU에 묶여 있지 않습니다 - 단지 대부분의 시간을 자고 있습니다.개선 된 실적은 어떤 모습일까요? 200 밀리 초 100 번 자고 거의 같은 시간이 걸릴 것입니다. 쓰기는 모두 같은 시간이 걸릴 것입니다. –

+1

@RavB 멀티 코어 컴퓨터는 단지 10 년 이상 동안 공통적으로 사용되어 왔지만, 단일 코어 만있는 시스템에서는 다중 스레드를 사용할 이유가 충분합니다 (결국 스레딩은 수십 년 동안 일반적으로 사용되었습니다)) 그 이유는 성과가 아닙니다. 단일 코어 머신에서 멀티 쓰레드 코드는 항상 * less * performant (동일한 작업을 수행하지만 스레딩 오버 헤드를 가짐)이지만 스레딩 오버 헤드에도 불구하고 유용 할 수 있습니다. – Servy

답변

1

당신은

은 하나 개의 코어가있는 경우에도 장기 실행 작업의 성능을 향상시킬 수있는 방법이 있나요 ... 그것을 시도하여 자신을 확인해야하지만?

네,하지만 분명히 병렬로 실행하지는 않습니다. 코드에서 성능 분석기를 사용하여 어떤 부분이 가장 오래 걸리는지 확인하고 더 최적화 된 방식으로 다시 작성하려고합니다. 의견에 따라

편집 :

당신은 CV 당신이하고있는 일에 이미지 프로세싱을하려고하는 경우는 CPU 바운드 다음은 않을 것이다 병렬화 (프로세서 실행하는 동안 밖으로 maxes)입니다 단일 코어 (CPU에 대해 서로 경쟁하게됩니다)에 도움이됩니다.

I/O가 완료 될 때까지 기다려야하는 경우 병렬 처리하면 다른 프로세스가 I/O를 기다리는 동안 작업을 진행할 수 있습니다.

당신이하는 일에 따라 달라집니다.이 질문을 닫고 정확히 무엇을하려고하는지, 그리고 CPU 집약적 인 작업에 대한 세부 정보를 묻는 것이 좋습니다.

(가능한 경우 이미지 처리 속도를 높이는 한 가지 방법은 미리 이미지 크기를 조정하는 것입니다. 예를 들어 얼굴 인식과 같이 이미지를 작게 만들면 많은 작업을 할 수 있습니다.).

+0

문제는 그것이 작성하는 데 오랜 시간이 걸리는 필자 코드가 아니라는 것입니다. EmguCV 이미지 컴퓨팅 알고리즘입니다. – Edgar

+0

시간이 걸립니다 (가능한 한 빨리 할 수 ​​있습니다 - CV는 꽤 잘 쓰여졌습니다). –

관련 문제