-
Pyston: Python 3.8.8 최적화 버전컴퓨터/파이썬 2021. 5. 9. 21:17728x90반응형
pyston
소개
아직은 linux 계열밖에 사용 못한다.
특징은 다음과 같다. (+ pip-pyston으로 python의 모든 모듈과 호환됨)
(리얼 프로덕션에서 30% 성능 향상을 볼 수 있다고 소개되어있다.)
- - A very-low-overhead JIT using DynASM
- - Quickening (인터프리터 효율적으로 하는 방법)
- - Aggressive attribute caching
- - General CPython optimizations
- - Build process improvements
설치법은 source를 직접 make 하던가 아래 package 파일을 설치한다.
벤치마크
Python 3.8.5 버전과 Pyston 2.2 버전을 비교해보았다. (Ubuntu 20.04, i5-10600KF)
머신러닝 라이브러리에서도 작동하면 성능 향상이 있지 않을까?
1. pyperformance
nbody, regex, hexiom, nqueens 등 다양한 알고리즘/기능을 쉽게 벤치마킹해주는 lib이다.
rough 하게 한 결과 Pyston 2.2가 약 1.7배 정도로 더 빠르다.
2. 기타
Bubble Sort, Selection Sort
크기 7,777의 랜덤 배열을 돌려본 결과, Pyston이 기존 Python보다 거의 2배 빨랐다.
def bubbleSort(array: list): isSorted: bool = False counter: int = 0 n: int = len(array) - 1 while not isSorted: isSorted = True for i in range(n - counter): if array[i] > array[i + 1]: array[i], array[i + 1] = array[i + 1], array[i] isSorted = False counter += 1 return array def selectionSort(array: list): """ Best : O(n^2) Time | O(1) Space Average : O(n^2) Time | O(1) Space Worst : O(n^2) Time | O(1) Space """ n: int = len(array) for currentIdx in range(n - 1): smallestIdx = currentIdx for i in range(currentIdx + 1, n): if array[smallestIdx] > array[i]: smallestIdx = i array[currentIdx], array[smallestIdx] = array[smallestIdx], array[currentIdx] return array
simple sum
크기 백만 랜덤 배열을 돌려본 결과, 약 1.3배 정도 빨랐다.
def my_sum(array: list): sums = 0 for val in array: sums += val return sums
django Template render
1000x1000 크기의 1000개의 cell HTML 테이블 만들기
결과: Pyston이 Python 3.8.5보다 약 1.9배 빨랐다.
728x90'컴퓨터 > 파이썬' 카테고리의 다른 글
Python Selenium: 여러가지 팁 (0) 2021.06.07 Python: Generic 함수 만들기 (functools.singledispatch) (0) 2021.04.07 Python: Google TTS 오디오 재생하기 (0) 2021.02.17