문제

여러 appDomains에서 병렬로 논리를 실행하려고합니다. 나는 "변화가 불가능한"레거시 코드로 작업하고 있기 때문에이 작업을 수행하고 있으며 몇 가지 사항을 병렬화하여 성능을 향상시키고 싶습니다. 문제는 1 appdomain 내에서 여러 인스턴스를 실행하면 일부 정적 데이터 구조에 의존하고 서로를 방해한다는 것입니다.

내 구현은 간단합니다. 나는 "executionHarness"클래스의 여러 인스턴스를 자신의 appDomain에서 실행하고 싶습니다. 그런 다음 "executionData [] data"매개 변수를 "executionHarnessProxy.execute ()"메소드로 전달합니다. 그런 다음이 사람은 "executionHarness.Execute ()"라고 부르며 모든 것이 좋습니다.

내 문제는 이제 데이터 배열을 프록시 클래스에 전달할 때마다 영원히 걸린다는 것입니다. executionData 클래스에는 [Serializable] 속성이 있으며 기능적으로는 모두 작동하지만 속도를 높이는 방법이 있는지 궁금합니다.

  1. appdomain 경계의 양쪽에서 직렬화/사제를 직접 수행하면 더 빠를 수 있습니까?
  2. 이 모든 시간은 직렬화를하는 데 소요 되었습니까? 아니면 AppDomains 사이의 직렬화 된 데이터를 전송하는 것입니까?
도움이 되었습니까?

해결책

더 많은 정보 없이는 알기가 어렵지만, 당신이 묘사 한 것에서, 나는 ExecutionData 배열은 범인입니다.

이 데이터가 필요한 메소드를 호출 할 때마다 데이터를 AppDomain으로 직렬화하고 잠재적으로 다시 배송합니다. 이 배열이 크면 약간의 처리 시간을 먹을 수 있습니다.

각 appdomain에서 데이터를 직접로드 할 수 있고 실행 결과를 기본 앱 도메인으로 다시 전달하는 것이 좋습니다. AppDomains간에 데이터 배열을 전달하지 않으면 프로세스 속도가 크게 높아질 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top