RPython GC의 객체 할당 속도는 얼마나 빠를까요?

2025-06-15

이 기사에서는 작은 RPython 벤치마크 프로그램을 사용하여 RPython 가비지 컬렉터(GC)의 객체 할당 속도를 평가합니다. 결과는 놀라울 정도로 빠른 할당 속도를 보여주는데, 34GB/초를 넘어 Boehm GC를 크게 능가합니다. 생성된 기계어 코드와 성능 카운터 분석을 통해 RPython GC의 속도 향상은 효율적인 범프 포인터 메커니즘과 최소한의 GC 오버헤드 때문임을 알 수 있습니다. PyPy의 JIT을 사용한 일반적인 Python 코드에서도 17GB/초의 할당 속도에 도달합니다.

더 보기
개발

Quadtree와 구간 분석을 사용한 셰익스피어 인용구 이미지 렌더링 가속화

2025-04-09

저자는 Prospero 챌린지에 참여하여 7866개의 연산으로 구성된 수학 공식으로 생성된 셰익스피어의 템페스트 인용구 1024x1024 이미지를 빠르게 렌더링하는 것을 목표로 했습니다. 이미지의 Quadtree 재귀적 분할, 공식을 단순화하는 구간 분석, "필요한 정보" 최적화 등 다양한 최적화 기법이 탐구되었습니다. RPython과 C로 구현되었으며, 저자는 다양한 최적화 전략의 성능을 비교했습니다. "필요한 정보" 최적화는 렌더링 속도를 크게 향상시켰으며, 최종 C 구현이 이 최적화를 통합함으로써 최고의 성능을 달성했습니다.

더 보기

PyPy의 저오버헤드 통계적 메모리 프로파일링: VMProf 및 GC 통합

2025-02-25

이 블로그 게시물에서는 PyPy를 위한 저오버헤드 통계적 메모리 프로파일링의 새로운 접근 방식을 설명합니다. 모든 메모리 할당을 기록하는 대신, n번째 할당된 바이트마다 샘플링하여 PyPy의 가비지 컬렉터(GC)의 범프 포인터 할당자 검사에 샘플링 로직을 효과적으로 통합합니다. 이를 통해 메모리 샘플링을 사용하든 사용하지 않든 고속 경로가 동일하게 유지되어 오버헤드가 최소화됩니다. 실험 결과 다양한 샘플링 비율에서 우수한 성능을 보이며 메모리 프로파일링에서 보다 정밀한 제어와 낮은 오버헤드를 제공합니다.

더 보기

PyPy의 추적 JIT: 실용적인 선택인가?

2025-01-10

본 게시물은 추적 JIT 컴파일러의 장점과 단점을 자세히 살펴보며, 특히 PyPy에서의 구현에 초점을 맞춥니다. 프로그램 실행을 추적하여 코드를 생성하는 추적 JIT는 Python과 같은 복잡한 언어를 처리할 때 추상화 계층을 효과적으로 제거하고 오버헤드를 줄이는 장점이 있습니다. 그러나 성능 불안정성과 예외적인 경우의 문제도 있습니다. PyPy에서 20년 가까운 경험을 바탕으로 저자는 추적 JIT의 적합성에 대한 뉘앙스 있는 분석을 제공하고 메서드 기반 JIT와 비교합니다. 결론적으로 PyPy의 메타 JIT 컨텍스트와 리소스 제약을 고려할 때 추적은 비교적 실용적인 선택임을 시사합니다.

더 보기
개발 추적 JIT