다음과 같은 코드로 비교를 해봤다.
본 자료는 개인적인 재미를 위한 자료이며 다른 변수들이 전혀 고려되지 않았습니다. 한번만 측정이 이루어 졌습니다.
WARING! 실행시 80메가의 텍스트 파일이 생성됩니다
import time def nm(n, m): _ans = [] arr = [] use = [False for _ in range(11)] def _nm(): if len(arr) == m: _ans.append(arr[:]) else: for i in range(n): i += 1 if use[i]: continue arr.append(i) use[i] = True _nm() arr.pop() use[i] = False _nm() return _ans start = time.time() ans = nm(10, 10) with open('output.txt', 'w') as f: for i in ans: for j in i: f.write(str(j)) f.write(' ') f.write('\n') print(f"{time.time()-start:.4f} sec") print(len(ans))
위 코드는 다음 문제와 코드를 기반으로 만들어졌다.
결과:
3628800
개의 수열이 담긴 txt파일 생성(약 80메가)python(3.10):
23.2572
sec
pypy(3.12):
5.5650
sec
파일 입출력을 하지 않는 경우는 대략 다음과 같음
python:
6
sec
pypy:
1
sec
입출력에서도 pypy가 효과가 있을 수 있음을 알았다.
파이썬 3.11 실행 결과
비슷한 환경에서 진행해보니 20.4(~6) sec 가 나온다.
ms를 다루는 컴퓨터 연산에서 3초 정도 차이면 실제 성능 개선이 영향을 끼쳤다고 볼 수 있을 거 같다.