피드로 돌아가기
QuillSort — A data sorter
Dev.toDev.to
Backend

Python용 고성능 정렬 라이브러리 Quill-Sort가 디스크 백업 외부 정렬 기능으로 수십억 개 요소 정렬을 구현했다

QuillSort — A data sorter

Isaiah Tucker2026년 4월 1일6advanced

Context

Python 내장 sorted()와 list.sort()는 소규모 데이터 정렬에 적합하다. 수백만~수십억 개 요소级别的 데이터를 처리할 때 메모리 부족과 속도 저하 문제가 발생한다. 표준 Python 리스트로 10억 개 정수를 정렬하려면 RAM이 먼저 고갈된다.

Technical Solution

  • Quill-Sort가 데이터 타입과 크기를 자동 분석하여 최적 알고리즘을 선택한다
  • RAM이 부족하면 .qwrite 임시 파일을 활용한 디스크 기반 외부 정렬을 지원한다
  • 28개 코어에 병렬로 정렬 작업을 분산 처리한다
  • NumPy array, Pandas Series, DataFrame을 직접 입력받아 처리한다
  • Early-exit detection으로 정렬된 데이터 검출 시 작업을 즉시 종료한다

Impact

1,000,000,000개 int32 정수 정렬 시 throughput이 초당 46.9M 요소에 도달했다. 중복 데이터가 많은 정수 정렬에서 Python 내장 정렬 대비 1.44배 빠른 성능을 보여주었다.

Key Takeaway

Quill-Sort의 강점은 수치형 대용량 데이터와 외부 정렬에 있으며, 문자열 정렬처럼 Python 내장 정렬이 이미 최적화된 영역에서는 별다른 이점이 없다


대용량 정수 배열 정렬 시 Quill-Sort의 high_performance_mode 옵션을 활성화하면 병렬 처리와 디스크 백업 외부 정렬로 처리 시간을 단축할 수 있다

원문 읽기