2009-02-08 5 views
7

IronPython을 필자가 작성한 응용 프로그램의 스크립팅 언어로 포함 할 것을 고려 중입니다. 그래서 그것을 시험해보기 위해 IronPython 2.0을 다운로드하고 대화 형 인터프리터를 시작했습니다. 내 쿼드 코어에서 6 기가 메모리로 약 5 초 정도 걸립니다. 덜 강력한 기계의 경우 얼마나 지연 될지 거의 상상할 수 없습니다.IronPython 성능

these benchmarks에 따르면 IronPython의 성능이 실제로 너무 심하게 나쁘지는 않은 것처럼 보입니다. 아니면 그렇지? 설치 중에 잘못 구성 했습니까? 아니면 대화식 통역사에 문제가 있습니까?

답변

13

IronPython의 성능은 실제로 매우 좋습니다. 시작 성능 저하는 .NET 런타임과 관련이 있습니다. .NET 응용 프로그램은 일반적으로 많은 어셈블리가로드되고 그 중 일부 (적어도 일부 클래스)가 즉시 컴파일되므로 시작 시간이 느립니다.

이것은 .NET에서 예상되는 동작입니다. 실제 런타임 성능이 훨씬 좋습니다. 심지어 IronPython 어셈블리를 미리 컴파일하고 컴퓨터의 GAC : 전역 어셈블리 캐시에 복사본을 저장하여 시작 성능을 향상시킬 수 있습니다. 이것은 gacutil.exe을 사용하여 수행 할 수 있습니다.

1

시작 시간과 실행 성능은 직접 관련이 없습니다. Java 애플릿은 애플릿이 느리게 실행 되었기 때문에가 아니라 실행을 시작하기 위해 실행 시간이 걸렸기 때문에 속도 저하에 대한 평판을 얻었습니다. 데스크톱 응용 프로그램을 사용하는 경우 시작 성능이 걱정됩니다. 런타임이 항상 실행중인 실행중인 서버 코드라면 문제가되지 않습니다.

4

IronPython과 함께 제공되는 표준 라이브러리를 미리 컴파일하여보다 나은 시작 성능을 얻을 수도 있습니다. 이것을 할 수있는 pyc.py 샘플이 있습니다.

+1

방금 ​​시도한 결과 거의 성능을 얻지 못했습니다. 이유는 모르겠다. – Cameron

2
코어의 수 :

시작 때문에 32 비트와 64 비트 사이의 성능 차이의 64 비트 운영 체제에서 특히 느린를 규칙적 많은 차이가 시동 할 수 있도록 않을 것입니다

신경 과민. ipy.exe는 Windows SDK에서

  • 사용 corflags.exe을 ipy32.exe하는

    1. 사본 : 64 비트 OS를 사용하고 있지만 64 비트 프로세스가 필요하지 않은 경우, 다음을 시도 "corflags /32bit + ipy32.exe"라고 말하면서 32 비트의 실행 파일로 ipy32.exe를 표시하십시오.

    32 비트 버전을 사용하면 CPython을 시작할 때보 다 훨씬 좋은 시작을 얻을 수 있습니다. 그러나 이것은 우리가 계속 작업하고있는 것입니다.

  • 1

    CodePlex의 IronPython 코드에서 인터프리터 시작 시간이 향상되었습니다. CPython과 비교할 때 여전히 지연이 나타나고 있지만 상당한 개선이 있습니다.