매트랩으로 구동하던 시뮬레이션 코드를 파이썬에서 numpy를 이용해 옮겨왔습니다. 근데 실행 시간이 너무나도 느리네요. 파이썬이 설치된 컴퓨터 사양이 더 좋은데도 왜 더 느려진건지 이해가 안갑니다.
제가 코드를 옮기는 과정에서 뭔가 실수를 한건지, 아니면 파이썬과 numpy가 매트랩보다 연산을 비효율적으로 하는건지 잘 모르겠네요.
18개의 댓글
무분별한 사용은 차단될 수 있습니다.
매트랩으로 구동하던 시뮬레이션 코드를 파이썬에서 numpy를 이용해 옮겨왔습니다. 근데 실행 시간이 너무나도 느리네요. 파이썬이 설치된 컴퓨터 사양이 더 좋은데도 왜 더 느려진건지 이해가 안갑니다.
제가 코드를 옮기는 과정에서 뭔가 실수를 한건지, 아니면 파이썬과 numpy가 매트랩보다 연산을 비효율적으로 하는건지 잘 모르겠네요.
남궁동생
코드 올려줄수있음?
갓경단
인턴하는 회사쪽에서 짠건데 보안땜시 가져올 수가 없어요 ㅠㅠ
남궁동생
남궁동생
혹시 반복문 쓴거 아니지?
갓경단
시뮬레이션 과정에서 어쩔 수 없이 for문을 쓸 수 밖에 없는데 이거 감안해도 매트랩보다 훨씬 오래걸리네요
삐깨삐갯피캐쮸
갓경단
매트랩에서도 원래 (수천~수만)x수천 크기 행렬 연산이어서 오래 걸리긴 했는데, 제가 파이썬쪽 리스트나 어레이 연산이 어떻게 굴러가는지 잘 몰라서 일단 넘파이 어레이로 싹 구현했습니다. 근데 넘파이가 매트랩보다 더 빠른거면 어디선가 이상하게 짠 부분이 있겠네요
anywhere
파이썬 기반으로 속도가 느리면 numpy 말고 numba
pypy가 넘파이 지원을 잘 하는지는 모르겠지만 pypy도 있고, 가능하다면 멀티코어 쓸 수 있게 multiprocessing도 사용
갓경단
정보 감사합니다. 찾아서 적용해봐야겠네요
멍청이
파이썬이 원래 존나느림 특히 for문
속도가 중요한데 매트랩이랑 문법 비슷하고 라이선스 없는 프로그래밍 언어 찾는다면 Julia 써보는거 추천하고 (ㅈㄴ 빠름)
파이썬밖에 쓸수 없다면 for문 최대한 줄이거나 pypy같은걸로 성능 높이는수밖에
그리고 매트랩은 기초적인 연산같은건 알아서 병렬연산 하는데 파이썬은 직접 프로그래밍해야되서 더 느릴거임
갓경단
파이썬이 반복문에서 약점이 있었군요 첨알았네요...알려주신 대로 for문을 줄이거나 julia 써보도록 하겠습니다 감사합니다
멍청이
예전에 간단한 벤치마킹 해본적 있는데
a^2 + b^2 + c^2 = 10000 만족하는 a,b,c 조합 (순서 무관) 찾는 코드 반복문으로 만들면
C++ 0.1초, 러스트 0.2초, Julia 0.2초, 매트랩 0.7초에 파이썬은 24초쯤 걸림
그것도 a^2를 a*a 대신 pow(a,2) 쓰면 70초쯤 걸리는거 보면 반복문 돌릴때마다 라이브러리 새로 찾는것같음 ㅋㅋ
갓경단
와 차이가...진짜 다른 부분은 몰라도 파이썬에서 for문 가득한건 진짜 피해야겠네요 ㄷㄷㄷ...
초전도치
파이썬이 for문이 느린듯 지피티한테 짜달라고 해보세요
세계최강
나도 같은문제 겪어서 그냥 필요한거 로우레벨로 짜는중 ㅋㅋ
숨은음은
쓰기 편하다 = 존나 느리다입니다
연산 반복 형태인 경우에는 그만큼 쓰기 쉬운 언어일 수록 졸라 느립니다
갓경단
그런 약점이 있는건 전혀 몰랐네요...어떻게든 연산 속도 늘릴 방법을 찾아봐야겠네요
숨은음은
지금은 로우레벨 언어가 되어버린 C가 아직도 사용되는 이유는 속도 때문입니다 ㅎㅎ