알고리즘

pypy가 python3 보다 느린 경우

kimjunseo 2024. 11. 13. 16:39

백준 풀다가 pypy로 시간초과가 나길래 python으로 컴파일했더니 통과되는 현상이 발생했습니다.

제 머릿속엔 대부분 pypy -> 시간↓ 메모리사용량↑ python3 -> 시간↑ 메모리사용량↓↑ 인데 왜일까 했는데 이 현상에 대해 질문을 하신 분이 계셨고 어느분께서 친절하게도 해당 현상에 대한 링크를 걸어주셨습니다.

https://codeforces.com/blog/entry/82989
https://codeforces.com/blog/entry/133247

결론은, 보통 문자열에 대한 I/O 혹은 문자열 이어 붙이기 등
문자열 관련 작업을 할 때 pypy가 python3 보다 느린 경우가 발생한다고 하네요.
(정확한 패턴은 아직 확인되지 않은 듯 합니다)

python은 C++과 다르게 기본적으로 문자열이 불변하다는 것을 가정한다고 합니다. 그래서 문자열에 특정 문자열을 이어 붙는 경우엔, 메모리에 문자열과 이어붙일 문자열을 복사해서 작업하는데 이때 python은 최적화가 되어있어 속도 저하가 크게 발생하지 않지만, pypy에선 관련 최적화가 되어있지 않아 속도 저하가 발생할 수 있다고 하네요.