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