[100000, 1000] 크기의 matrix를 10만차원 축으로 cumsum을 했더니 약 2.3초가 걸려서 이를 더 빠르게 하고싶음.
기본 실험: 해당 matrix에 대해서 np.sum과 np.cumsum 을 수행해봄. 3번과 4번 cell에서는 cumsum을 한번에 모든 dim에대해 한것과 하나씩 바꿔가면서 한 실험 결과임cumsum의 경우 메모리에 writing하는 연산이 많아 sum보다 많이 느림.그런데 3번과 4번에서 속도차이가 나는 것이 이상해서, inplace cumsum으로 바꾸니 속도가 동일해짐.
여기서 더 빠르게 하기 위해, 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 문보다는 훨씬 느림
그런데 Matrix크기가 매우 커지기 시작하면, Numpy가 C++보다 빨라짐.
이것이 가능한 이유는 numpy가 거대한 matrix의 연산에 최적으로 구현된 c기반의 라이브러리이기 때문임.(C로 컴파일된 함수를 내부적으로 실행함)
조금 사용이 복잡하지만, Pure C++에 거의 가까운 속도를 내는 python 라이브러리가 있음.
http://scipy-cookbook.readthedocs.io/items/PerformancePython.html