====== 파이썬 코드 수행시간 ====== * Python 3.11.0 기준으로 BOJ에서 수행한 결과 * 비교의 기준이 되는 가장 미니멈한 코드의 수행시간은 30616KB / 36ms * [[ps:problems:boj:1000]]로 테스트. (코드 [[https://www.acmicpc.net/source/52480129]]) ===== 타입 어노테이션 ===== * 타입 어노테이션을 위해서 typing이나 collections.abc 모듈을 import하는 것은 로딩시간에 꽤 영향을 준다. * collection.abc는 30ms, typing은 130ms 정도의 추가 시간이 걸린다. ^ 어노테이션 ^ 메모리 ^ 시간 ^ 코드 ^ | - | 30616 | 36 | [[https://www.acmicpc.net/source/52480129|코드]] | | from typing import TypeVar; _T = TypeVar('_T') | 38864 | 160 | [[https://www.acmicpc.net/source/52480226|코드]] | | from typing import Optional; _O = Optional[int] | 38864 | 168 | [[https://www.acmicpc.net/source/52480301|코드]] | | %%_O = int | None%% | 30616 | 64 | [[https://www.acmicpc.net/source/52480357|코드]] | | from collections.abc import Iterable; _I = Iterable[int] | 34076 | 72 | [[https://www.acmicpc.net/source/52480387|코드]] | ===== 입출력 ===== * 적은 양의 입력을 받을때, input() 대신 sys.stdin.readline() 를 사용한다고 속도가 더 느려지는것은 아니다 (import sys 자체는 오버헤드가 없다) ^ 인풋 ^ 메모리 ^ 시간 ^ 코드 ^ | input() | 30616 | 36 | [[https://www.acmicpc.net/source/52480129|코드]] | | import sys; sys.stdin.readline() | 30616 | 36 | [[https://www.acmicpc.net/source/52480531|코드]] | ===== 라이브러리 ===== ==== PrimeFactorizationCalculator ==== * Least Prime Factor 테이블을 계산하는 방법에 따른 시간 차이. * 상수 최적화 여지는 좀더 남아있음 * 테스트 문제는 [[ps:problems:boj:16563]]로 테스트 (N=5,000,000) ^ 방법 ^ 시간 ^ 코드 ^ | 에라토스테네스, 2의 배수만 미리계산 | 4176 | [[https://www.acmicpc.net/source/52620979|코드]] | | 에라토스테네스, 11이하 소수 미리계산 | 4192 | [[https://www.acmicpc.net/source/52621012|코드]] | | 리니어 시브, 2의 배수만 미리계산 | 3980 | [[https://www.acmicpc.net/source/52620557|코드]] | | 리니어 시브, 11이하 소수 미리계산 | 3760 | [[https://www.acmicpc.net/source/52620861|코드]] |