1. 문제상황

[100000, 1000] 크기의 matrix를 10만차원 축으로 cumsum을 했더니 약 2.3초가 걸려서 이를 더 빠르게 하고싶음.


2. C로 최적화?

여기서 더 빠르게 하기 위해, Numpy를 C로바꾸면 더 빨라질까? 결론은 Numpy가 C보다 더 빠르다,.

Python VS Chttps://medium.com/coding-with-clarity/speeding-up-python-and-numpy-c-ing-the-way-3b9658ed78f4위 블로그에서는 Python / C / Numpy의 속도비교를 matrix의 크기에따라 바꿔가면서 수행함.Matrix크기가 작을 때, Numpy는 python 기본 for문보다 느리고, C++ for 문보다는 훨씬 느림

https://user-images.githubusercontent.com/4004593/35230470-75fc67f4-ffd9-11e7-8ecc-86edbbce9a28.png

그런데 Matrix크기가 매우 커지기 시작하면, Numpy가 C++보다 빨라짐.

https://user-images.githubusercontent.com/4004593/35230494-85e82ffe-ffd9-11e7-873d-4941c2de8df6.png

이것이 가능한 이유는 numpy가 거대한 matrix의 연산에 최적으로 구현된 c기반의 라이브러리이기 때문임.(C로 컴파일된 함수를 내부적으로 실행함)

여러가지 다양한 Python최적화 라이브러리

조금 사용이 복잡하지만, Pure C++에 거의 가까운 속도를 내는 python 라이브러리가 있음.

https://user-images.githubusercontent.com/4004593/35230497-882838fe-ffd9-11e7-859a-eb8ff17c88f6.png

http://scipy-cookbook.readthedocs.io/items/PerformancePython.html


3. 보다 강력한 방법

CPU 병렬화