러스트 Enum을 64비트 정수로 교체했더니 인터프리터 속도 17% 향상

“Plush 인터프리터에서 러스트의 태그드 enum(16바이트)을 64비트 정수로 교체하여 값 타입의 메모리 낭비를 줄였고, 그 결과 인터프리터 속도가 17% 향상되었다. 이는 힙 객체 주소의 하위 3비트가 0인 점을 활용한 low-bit tagging 기법을 적용한 것이다.”

AI 요약

Plush 언어 인터프리터 개발자가 러스트의 태그드 enum(128비트)을 64비트 정수 기반의 로우비트 태깅(low-bit tagging) 방식으로 교체하여 인터프리터 속도를 17% 향상시켰다. 64비트 시스템에서 힙 객체 주소가 8바이트 정렬된다는 점을 이용해 하위 3비트를 태그로 활용하는 고전적 기법을 적용했다. 또한 정수 값의 하위 2비트도 차용하는 방식으로 모든 값 타입을 64비트에 압축했다. 이로써 대규모 배열에서 발생하던 메모리 낭비를 제거하고 성능을 개선했다.

핵심 포인트

  • 기존 러스트 태그드 enum은 16바이트(128비트)였으나, 각 변형은 64비트만 필요하고 태그는 8비트만 필요했음에도 메모리 정렬 제약으로 낭비 발생
  • 64비트 시스템에서 힙 객체 주소가 8바이트 정렬되어 하위 3비트가 항상 0이라는 점을 활용
  • 정수 값의 하위 2비트도 차용하는 방식으로 모든 값 타입을 64비트에 압축
  • 인터프리터 속도 17% 향상 달성

향후 전망

  • 동적 타입 언어 인터프리터의 값 표현 최적화 기법으로 널리 참조될 수 있으며, GC 최적화(16배 속도 향상)와 결합해 실시간 3D 애니메이션 렌더링이라는 목표에 근접할 것
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...