2011-04-26 2 views
3

나는 스캔 한 이미지가 들어있는 디렉토리를 입력으로받는 Windows 서비스 응용 프로그램을 만들고 있습니다. 내 응용 프로그램은 모든 이미지를 반복하며 모든 이미지에 대해 바코드, 송장 번호 및 고객 번호를 얻기 위해 일부 OCR 작업을 수행합니다.OCR 응용 프로그램에서 C# 병렬 작업 사용?

어떤 배경 정보 : 응용 프로그램에 의해 수행

  1. 하는 작업이 집중적으로 꽤 CPU
  2. procss하는 이미지의 많은 수의 스캔 한 이미지 파일이 큰 (~ 2메가바이트)
  3. 이 있습니다
  4. 응용 프로그램은 16GB RAM이 장착 된 8 코어 서버에서 실행됩니다.

내 질문 :

나는 그것이 .NET을 사용하는 방식으로 내 응용 프로그램을 변경하면 정말 차이를 만들 것입니다 만약 내가 확실 해요는 파일 시스템에 이미지와 함께 물건을 이후로 병렬 작업.

아무에게도 이것에 대해 조언 해 줄 수 있습니까?

감사합니다.

답변

1

이미지 처리가 디스크에서 N 이미지를 읽는 것보다 오래 걸리면 여러 이미지를 동시에 처리하는 것이 좋습니다. 그림에서는 100 밀리 초 (검색 시간 포함) 이하의 디스크에서 2MB 파일을 읽을 수 있습니다. 그림 1은 8 개의 이미지를 메모리에 읽어들입니다.

이미지 처리에 이미지 당 두 번째 이상 걸리면 I/O가 문제가되지 않습니다. 동시에하십시오. 필요한 경우 축소 할 수 있습니다 (즉, 처리 시간이 1/2 초가 걸리면 4 개의 동시 이미지 만 사용하는 것이 가장 좋습니다).

상당히 빨리 테스트 할 수 있어야합니다. 디스크에서 임의로 이미지를 읽는 프로그램을 작성하고 파일을 열고 읽거나 닫는 평균 시간을 계산하십시오. 또한 이미지 샘플을 처리하고 평균 처리 시간을 계산하는 프로그램을 작성하십시오. 이러한 숫자는 동시 처리가 도움이되는지 여부를 알려줍니다.

+0

아주 좋은 대답입니다! 정확히 내가 기다리고 있던 대답! :) –

1

나는 그것이 'It Depends'라고 생각한다.

성능 모니터링 (심지어 작업 관리자에있는 것)의 일부 유형으로 응용 프로그램을 실행하고 CPU가 얼마나 높은지 확인해 봅니다.

CPU가 최대 값을 초과하면; paralell에서 실행하려면 성능이 향상됩니다. 그렇지 않다면 디스크에 병목 현상이 있고 다른 변경 사항이 없으면 많은 이득을 얻지 못할 것입니다.

+0

오류를 발견하는 유일한 방법은 이것을 찾으려면? 문제는 관리자가 아직 병렬 작업을 사용하여 공식 "GO"를 제공하지 않았다는 것입니다. 현재이 문제를 조사하는 중입니다. –