순수 함수형 프로그래밍은 C 성능에 얼마나 근접할 수 있을까?

4 hours ago 6

순수 Roc로 작성한 roc-deflate를 최적화한 결과, Silesia 압축 벤치마크 144개에서 C 라이브러리 libdeflate 대비 성능 저하율의 중앙값이 M1에서 2.6%, Ryzen에서 8.9% 에 그침 입력에 따라 18% 느리거나 18% 조금 넘게 빠른 결과가 나왔지만, 평균적으로 libdeflate보다 빠르지는 않으며 이 한 사례를 Roc의 일반적인 성능으로 확대할 수는 없음 Roc는 메모리 안전성, 자동 참조 카운팅, 경계 검사를 강제하고 이를 해제하는 unsafe를 제공하지 않음. 컴파일러가 안전성을 증명한 검사와 참조 카운팅 연산을 제거하면서 C에 근접한 성능을 달성함 순수 Roc 구현은 부수 효과 차단과 타깃 간 결정성도 보장하도록 설계됨. 임의의 FFI와 패키지 빌드 스크립트가 없어, 손상된 패키지가 수행할 수 있는 악의적 동작에도 제약이 있음 최적화 대부분은 일반적인 기법이었으며, Roc에서는 불필요한 공유 방지, 경계 검사 끌어올리기, 컴파일 타임 조회 테이블 생성, 래핑 정수 연산 선택도 성능 개선에 활용함 Lean의 성과에서 출발한 libdeflate 비교 Why Lean is Faster Than Rust의 비교에서 함수형 언어이자 증명 보조 도구인 Lean 4로 작성한 lean-zip이 Rust의 miniz_oxide를 모든 압축 수준에서 앞섰음 같은 압축 수준에서 더 높은 처리량을 달성했으며, 가장 빠른 설정에서는 15% 빠르고 출력 크기는 8.8% 작았음 miniz_oxide는 crates.io 기준 다운로드 수가 10억 회를 넘는 패키지임 다만 아키텍처별 SIMD를 세밀하게 활용한 C 구현 libdeflate에는 크게 뒤졌음 Roc는 증명 도구가 아닌 함수형 언어로, 실행 속도와 컴파일 속도를 모두 핵심 목표로 삼음 첫 번호 릴리스인 0.1.0까지 수 주가 남은 미성숙한 언어이며, 패키지 생태계도 최적화 작업이 거의 없었음 언어 설계, 기존 최적화, 새 컴파일러 구현을 바탕으로 libdeflate와의 성능 격차를 시험함 비교 대상인 roc-deflate는 Niclas Ahden이 작성해 유료 프로덕션 업무에도 사용하는 DEFLATE 압축 패키지임 아직 스트리밍을 구현하지 않아 비스트리밍 API만 비교했으며, Silesia 코퍼스에서 두 구현이 동일한 출력을 생성하는지도 검증함 벤치마크 결과와 일반화의 한계 2021년형 M1 MacBook Pro에서 최적화 작업을 수행하고...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵