Movatterモバイル変換


[0]ホーム

URL:


Logo

Python3 vs Pypy3

가끔 "같은 프로그램을 Python 3 으로 제출하면 시간 초과를 받는데, Pypy3 으로 제출하면 맞았습니다를 받습니다. 왜 그런가요?" 같은 질문을 보게 됩니다.이 글에서는 이런 종류의 질문에 대한 답변을 해 보려고 합니다.

Python 3 은 언어 명세입니다. 프로그램의 문법을 정의하고, 각각의 문장이 가진 의미 (= 문장을 실행하면 달라지는 변화)를 정합니다.이렇게 Python 3 언어 명세를 정한 사람들은 그 언어 명세를 따르는 구현체 또한 제작하여 언어 명세와 같이 공개/배포합니다.

그 뒤, 몇몇 사람들은 배포된 Python 3 의 언어 명세를 이용하여 별도의 구현체를 만들기도 합니다.Pypy3 이나 IronPython, Jython 등이 여기에 해당합니다.

Python 3의 언어 명세를 만든 사람들이 같이 배포하는 구현체 또한 Python 3 이라고 부르는 것이 일반적입니다만,다른 구현체와 구분할 필요가 있을 때에는 CPython3 라는 이름을 사용하기도 합니다.CPython3 과 같이 언어 명세를 만든 사람이 같이 배포하는 구현체를 "참조구현" (Reference Implementation) 라고 부르기도 합니다.

즉, Python 3 (CPython3) 와 Pypy3 은 Python 3 의 언어 명세를 구현한 서로 다른 구현체입니다.GCC / clang / MSVC 가 C++ 언어 명세를 구현한 서로 다른 구현체인 것과 마찬가지입니다.

서로 다른 구현체인 CPython3 과 Pypy3 이 서로 다른 성능을 보이는 것은 어떻게 생각하면 매우 당연한 것입니다.GCC C++ 와 clang c++ 의 성능 차이가 별로 차이가 없는 것이 오히려 더 특이한 경우라고 생각되기도 합니다.

서로 다른 구현체인 만큼 각자 "잘하는" 분야와 "잘 못하는" 분야가 있을 수 있습니다.BOJ 와 같은 문제 풀이에서 많이 사용되는 프로그램들은 "대체로" Pypy3 가 유리하다고 알려져 있습니다만항상 100% 그럴 것이라고 생각해서는 안 됩니다.

아래는 CPython3 과 Pypy3 의 성능 비교 그래프입니다.각각의 벤치마크에서 CPython3 의 소요시간을 1.00 으로 표준화했을 때 Pypy3 의 소요시간을 나타낸 그래프로그래프 길이가 짧을수록 Pypy3 의 소요시간이 적습니다.

비교 그래프

그래프를 보면, 대부분의 경우 Pypy3 의 소요시간이 적지만, 몇몇 벤치마크의 경우 오히려 CPython3 의 소요시간이 더 적은 것을 알 수 있습니다.BOJ 에서도 마찬가지로 Python 3 으로 제출한 프로그램이 Pypy3 보다 더 시간이 짧은 경우가 얼마든지 나올 수 있습니다.


댓글댓글 쓰기


검색

목록보기

최신 글

Python3 vs Pypy3

빅-O, 빅-Ω, 빅-Ө는 최악, 최선, 평균을 의미하지 않습니다.

solved.ac 조건 숨겨진 배경 힌트 드림📢

31442번 좋은 수열 문제의 오토마타 기반 풀이

제3회 초콜릿컵/Arena #23 문제 오류에 대한 사과문 및 출제 검수 과정 복기

solved.ac Grand Arena Party 후기

IOI 2016 Aliens 풀이 (BOJ 20090)

[C++] tie 와 sync_with_stdio

Zeta, Mobius Transform to AND, OR, GCD Convolution

월간 향유회 2023. 5. 풀이

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일:contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호


[8]ページ先頭

©2009-2025 Movatter.jp