2009-10-17 6 views
4

인기있는 소프트웨어 개발 패턴이 될 것으로 보인다 : Python-then-profile-then-C 디자인 패턴의 모범 사례?

  1. 파이썬의 논리와 알고리즘을 때리기.
  2. 프로필은 느린 비트가 어디에 있는지 확인합니다.
  3. 이들을 C로 대체하십시오.
  4. 높은 수준과 빠른 사이에 가장 적합한 절충 코드입니다.

내가 사람들에게 좋은 생각이라고 말한 것을 보았 기 때문에 간단히 말합니다.

그러나 실제로이 방법을 사용한 큰 프로젝트가 있습니까? 가급적이면 무료 소프트웨어 프로젝트를 통해 모양을 확인하고 그들이 어떻게했는지 볼 수 있습니다. 그리고 모범 사례를 배울 수도 있습니다.

+2

는 요소를 수행 C.에 기록 된 약 빠르게 자식으로의 내장 라이브러리 "대형 프로젝트"로 계산? cStringIO와 cPickle과 같이 여러 가지가 있습니다. –

+1

은 정확하기 때문에 배울만큼 충분한가요?이 용어는 일반적인 의미의 디자인 패턴이 아니며, 개발 방법론입니다. –

답변

0

3 단계가 잘못되었습니다. 현대 사회에서 느린 비트의 절반 이상은 I/O 또는 네트워크 경계이거나 프로세스 외부의 다른 리소스에 의해 제한됩니다. 무엇이든 다시 작성하면 버그를 도입 할 것입니다.

+5

So 2 단계에서 "느린"을 "CPU 바인딩 및 시간 소모"로 바꾸십시오. 그런 비트가 없으면 'GOTO 4';-)를 대체하십시오. –

3

사람들이 개발에 접근하는 방법에는 여러 가지가 있습니다.

때때로 사람들은 3 단계를 수행하여 느린 비트가 외부 환경으로 인해 발생한다는 것을 알고 있기 때문에 Python을 C로 다시 작성해도 문제가 해결되지 않습니다. 이러한 유형의 느림보는 시스템 측면에서 해결 될 수 있으며 때로는 다른 알고리즘을 적용하여 파이썬에서 해결할 수 있습니다. 예를 들어 네트워크 응답을 캐싱하여 매번 네트워크에 갈 필요가 없거나 SQL에서 작업을 서버에서 실행되는 저장 프로 시저로 오프로드하여 결과 집합의 크기를 줄일 수 있습니다. 일반적으로 C로 다시 작성해야하는 것이 있으면 먼저 기존 라이브러리를 찾고 파이썬 래퍼를 만듭니다 (존재하지 않는 경우). 많은 사람들이 당신 앞에이 길을 걸어 왔습니다.

1 단계는 응용 프로그램 아키텍처를 쓰레기로 처리하고 일부 영역에서 성능 문제가있을 수 있다고 의심하고 C 라이브러리 (아마도 이미 파이썬 용으로 랩핑되어 있음)를 선택하여 사용하는 것입니다. 그런 다음 2 단계는 처리해야 할 큰 성능 문제가 없다는 것을 확인합니다.

한 명 이상의 숙련 된 개발자가있는 팀이 성능 병목 현상을 예측하고 처음부터 기존 모듈을 사용하여 성능 병목 현상을 완화하는 것이 좋습니다. 파이썬 초보자 인 경우 3 단계 프로세스가 완벽하게 유효합니다. 즉, 프로파일 러가 있고 필요한 경우 빠른 C 모듈의 가능성을 알고 코드 작성 및 테스트를 시작하십시오. 그리고 psyco와 응용 프로그램을 바이너리 실행 파일에 고정시키는 다양한 도구가 있습니다.

일부 C 또는 C++ 모듈을 사용해야하는 경우 C에서 응용 프로그램을 작성하지만 대부분의 작업을 수행하기 위해 Python을 포함시키는 것이 좋습니다. 그들은 내가했던 파이썬

를 사용하기 시작했을 때 나는 또한 그런 식으로 생각 C.

2

에서 할 지루한 코드의 유형의 거친 생각을 가지고 있기 때문에 경험이 풍부한 C 또는 C++ 개발자를위한 잘 작동 3 단계를 12 회에 두 번 (기억할 수있는) 반복합니다. 디자인 패턴이라고 부를만큼 자주는 아닙니다. 대개 기존 C 라이브러리를 래핑하는 것으로 충분합니다. 보통 다른 누군가가 이미 래퍼를 작성했습니다.