SIRINI`s Blog

life, saying, developing, . . . and so on

PyPy 를 접하다

회사에서 알고리즘 테스트용으로 간단하게 구현한 파이썬 코드가 있었습니다. C++ 로 구현 했을 땐 0.1 sec 이하로 실행되는 것인데, 파이썬에서 디버깅 모드로 실행 해보니 20초 내외가 걸리더군요. 대략 30MB 정도 크기의 바이너리 배열을 다루는 것인데 릴리즈 모드로 해도 3.4초 정도가 소요 되었습니다. 구현을 바꿔보기도 하고 numpy 를 도입해 보기도 했는데 역시나 제대로 단축되진 않더군요. 

"아 역시 속도는 C/C++ 가 짱이지" 라고 생각하며 어차피 프로토타이핑 목적이었으니까, 괜찮지 않을까 싶어서 실험을 마무리 하려 했습니다. 그러다 문득 PyPy 가 생각이 나서 혹시나 하는 마음에 실행을 해 보았죠.

0.32 sec ...!!!

와우! 정말 놀라웠습니다! 단지 PyPy 로 실행 했을 뿐인데, 엄청난 속도 향상이 있었습니다. 아무래도 30MB 정도 크기의 바이너리 배열을 순회하는 로직이 JIT 를 통해 기계어로 번역 되면서 C 수준의 속도를 가지게 된 것 같았습니다. 야.. 이 정도면 굳이 C/C++ 로 구현할 필요가 있을까? 싶을 정도였지요. 놀라웠습니다.

실행 속도를 줄이기 위해 따로 한 건 전혀 없었습니다. 다행히 제가 작성한 파이썬 코드는 파이썬이 제공하는 기본 모듈들만 사용하고 있었고, 병목이 되었던 천만개 정도 되는 배열 순회 / 연산 부분이 마침 JIT 버프를 받아 최적화가 이루어 졌습니다. 단지 PyPy 로 해당 파이썬 코드를 실행 했을 뿐인데 실행 속도가 어마무시하게 빨라진 것이죠! 

그 동안 파이썬을 이용해서 개발 속도를 높이는 것으로도 충분히 만족 했었는데, 이제는 실행 속도까지 만만치 않게 좋아지니 점점 더 욕심이 나기 시작 했습니다. 프로토타이핑으로 그치기엔 정말이지 너무나도 매력적이네요. 인생은 짧은데 파이썬이 있어서 다행 입니다. :^D

비밀글 입니다
Leave a comment here!
이 곳에 이름(닉네임)을 입력하세요
이 곳에 글 수정/삭제를 위한 비밀번호를 입력하세요
이 곳에 이메일 주소를 입력하세요 (선택)
이 곳에 웹사이트 주소를 입력하세요 (선택)