2012-02-02 4 views
4

방금 ​​Windows 2008 R2 64 비트로 마이그레이션 한 응용 프로그램이 있습니다. 본질적으로 VC6 C++로 작성된 32 비트 COM 응용 프로그램에 대한 동적 호출을 만드는 C# .NET 4.0 WCF 응용 프로그램입니다.Com이 64 비트 서버에서 32 비트 응용 프로그램으로 천천히 호출

Windows 7 32 비트 바탕 화면에서 실행할 때 COM 호출이 상당히 빨라졌습니다.

서버는 더 강력한 규모의 주문되어야한다 (비록 호스팅 된 환경에서)

나는 시도하고 이것의 하단에 도착 확인할 수있는 빠른/쉬운 일이 있습니까? 오늘 가상 머신에 할당 된 리소스를 알기 위해 노력할 예정이지만 평균 시간은 ..

32 비트 COM 호출 기능입니까?

감사합니다.

+0

솔루션은 x64 플랫폼에 대해 COM 응용 프로그램을 컴파일하는 것입니다. 최신 버전의 Visual Studio (즉, Visual C 6은 별도의 프로그램으로 출시되었을 당시에는 Visual Studio 6이었습니다)가 필요하지 않습니다. –

+0

누락 된 세부 정보가 너무 많습니다. 이 프로세스가 out-of-process COM 서버입니까? 같은 컴퓨터에서 실행됩니까? "호스트 된"것은 실제로 가상 컴퓨터에서 실행됩니까? COM +? AnyCPU에서 관리되는 코드가 실행됩니까? 이 아파트 스레드 개체입니까? –

답변

5

64 비트 프로세스에서 32 비트 코드를 실행하는 것은 Windows 하위 시스템 (Windows on WoW)과 관련되어 있기 때문에 시간이 오래 걸립니다. 64 비트 코드와 32 비트 코드는 동일한 프로세스 내에서 실행할 수 없습니다. 따라서 코드에서 32 비트 dll로을 모두 호출하면 프로세스 및 아키텍처 경계를 통과해야합니다.이 작업에는 무거운 데이터 정렬과 함수 호출 마샬링이 필요합니다. .

http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/

는 서로 다른 상황에서 응용 프로그램의 성능을 측정하는 몇 가지 프로파일 링 작업을 수행합니다.

그런 당신에게 가장 성능을 제공합니다 일을 64에서 실행 86에

  • 컴파일 64
  • 에서 실행 64에
  • 컴파일 64
  • 에서 실행되는 모든-CPU에

    • 컴파일,,,. 당신은 COM 라이브러리 소스 코드에 액세스 할 수있는 경우 그러나

      ...

      , 가장 좋은 점은 x64 플랫폼에 다시 컴파일하는 것입니다.

    관련 문제