2009-09-17 3 views
2

필자는 장기간에 걸친 계산이 포함 된 대규모 금융 가격 책정 프로그램을 연구하고 있습니다. 우리는 psyco의 선택적 적용으로 가속화 할 수있는 몇 가지 기능을 확인했습니다. 저의 경영진은 psyco를 스택에 추가 할 때의 이점을 평가 해달라고 요청했습니다. &내 프로젝트에 Psyco를 혼합 할 때 (있다면) 어떤 위험이 있습니까?

내 프로젝트의 중요한 특성을 감안할 때 "성능 향상"이 잠재적으로 안정성을 저하시킬 수있는 경우 허용되지 않습니다. 나는 psyco를 사용하여 더 많은 메모리를 사용하면서 추가적인 성능을 얻는다는 것을 읽었습니다. 이것이 문제가 될까봐 걱정됩니다.

내가 이런 식으로 일을 해요 : 모두에서

@psyco.proxy 
def my_slow_function(xxx): 

을, 우리는 더 이상 15 개 기능에 사이코을 적용 할 것으로 예상 -이 아주 많이 사용된다. 이 라이브러리에는 수천 개의 함수가 있으므로이 코드는 코드의 작은 하위 집합에만 영향을 미칩니다. 모든 기능은 작고, 수학적이며 무국적입니다.

  • 가이는
  • 우리의 오랜 설립 라이브러리에이 구성 요소를 추가 할 때 발생할 수있는 다른 문제가 실질적으로 더 많은 메모리를 사용하는 위험이 될 가능성이 있습니까? 참고로

이 플랫폼은 윈도우 32 비트 XP에

UPDATE 파이썬 2.4.4 : 그것은, 주요 잠재적 인 위험이 사이코가 추가되기 전에 프로그램보다 더 많은 메모리를 필요로하는 프로그램에 의한 것 같습니다 너무 이상적를 I psyco를 추가하면 시스템의 메모리 요구 사항이 크게 달라지는 지 확인하는 방법을 찾고 있습니다.

답변

3

왜 프로파일 링을 시도해보십시오.

메모리 사용 : X + KB 얼마나 많은 메모리의 사이코의 현재 개념이 방출 기계 코드 및 지원하는 데이터 구조에 대한 소비

사이코 꽤 자세한 logging 시설이 있습니다. 이것은 메모리 오버 헤드의 추측입니다 (+ 기호는이 수치가 과소 평가되었음을 나타냅니다). 이 정보를 사용하여 메모리 제한을 조정하십시오 (3.2.2 절).

참고 또한 그 memory usage is configurable : 사이코 의해 소비되는 메모리 (킬로바이트) 한도에 도달

memorymax

멈춘다. 이 제한에는이 프로파일 러가 시작되기 전에 소비 된 메모리가 포함됩니다.

+0

고마워요, 대단한 답변 –

+0

더 많은 메모리를 사용하게 만드는 psyco에 대해 무엇입니까? 그것은 원래 함수 객체의 복사본을 메모리에 만듭니다 (아마도 아주 작은 것입니다). 또는 함수가 더 많은 메모리를 실행해야합니다. –

+0

필자는 전문화 처리 단계를 수행하기 전에 수집해야하는 런타임 정보의 오버 헤드가 대부분이라고 생각합니다. 이것은 각 연산이 런타임 컨텍스트에 크게 의존 할 수 있기 때문에 Python과 같은 매우 높은 수준의 언어에서 필요합니다. Psyco PEPM '04에 자세히 설명되어 있습니다. http://psyco.sourceforge.net/doc.html –

2

Psyco는 JIT 컴파일러입니다. 함수가 상태 비 저장 (stateless)이면, 더 많은 메모리를 제외하고는 거의 draw back이 없어야합니다.

+0

얼마나 많은 메모리를 사용할 것으로 예상 할 수 있습니까? 예를 들어, 두 배의 메모리, 수백 배 더 많은 메모리를 사용합니까? –

관련 문제