CAPCOM의 RE:Dox, 다양한 데이터 포맷을 아우르는 고성능 엔진
CAPCOM-TD-OSS/REDox
GitHubCAPCOM이 개발한 RE:Dox는 JSON, XML 등 다양한 구조화된 데이터를 공통의 '토큰 DOM' 형태로 처리하는 고성능 데이터 엔진입니다.
데이터 포맷에 상관없이 하나의 엔진으로 데이터를 읽고 수정할 수 있어 개발자가 데이터 처리의 유연성과 효율성을 높일 수 있어요.
- 이 엔진은 기존 라이브러리의 장점(빠른 파싱 속도, 편집 용이성)을 결합했으며, 벤치마크에서 시스템.텍스트.json 대비 최대 2.8배 빠른 병렬 역직렬화 성능을 입증했습니다.
- 개발자는 데이터 포맷에 구애받지 않고 하나의 통일된 API로 데이터를 읽고 수정할 수 있으며, 메모리상에서 문서를 직접 편집하는 것이 가능해 작업 효율성이 높습니다.
- 이 엔진은 .NET 환경에 최적화되어 있으며, 제시된 성능 수치는 특정 벤치마크 데이터셋과 환경에 기반하므로 일반적인 성능 보장으로 해석해서는 안 됩니다.
RE:Dox는 CAPCOM의 차세대 게임 엔진용 핵심 구성 요소로 개발된 고성능 기반 구조화 데이터 엔진입니다. 이 엔진은 단순한 JSON 직렬화 도구를 넘어, 다양한 포맷(JSON, XML, CBOR, MessagePack 등)으로 된 구조화 데이터를 공통적이고 압축적인 '토큰 DOM/IR' 형태로 파싱합니다. 이 통합된 구조적 인덱스를 활용하여 읽기, 편집, 형식 변환, 직렬화 및 역직렬화를 수행할 수 있습니다.
RE:Dox는 기존 라이브러리들이 가진 장점들을 결합한 것이 특징입니다. 토큰 DOM의 빠른 파싱 속도와 노드 DOM의 높은 편집 용이성, 그리고 Newtonsoft.Json의 유연성을 모두 제공합니다. 결과에 따르면, System.Text.Json 대비 최대 ~2.8배 빠른 자동 병렬 역직렬화 성능과 낮은 메모리 할당량을 보여줍니다.
데이터를 읽고 쓰는 과정에서 RE:Dox는 비대칭적인 접근 방식을 사용합니다. 쓰기(Serialize) 경로는 데이터를 아는 상태이므로 버퍼에 직접 작성하는 DataWriter를 사용하며, 구조가 불분명한 읽기(Deserialize) 경로는 먼저 토큰 DOM을 구축하여 random access 방식으로 처리합니다. 이 덕분에 문서 전체를 재구성하지 않고도 배열이나 객체를 인플레이스로 수정하거나 삭제할 수 있습니다.
또한, RE:Dox는 포맷에 구애받지 않는 통합 컨버터 모델을 제공합니다. `DataConverter<T>`와 같은 컨버터 로직은 특정 형식 구현 대신 format-agnostic한 DataReader/DataWriter 추상화 계층을 대상으로 작성되어, 여러 데이터 형식이 동일한 변환 로직을 공유할 수 있게 합니다.
용어 풀이
- 토큰
- AI 모델이 글을 처리하는 단위. 단어보다 작은 조각이며 사용량과 요금을 셀 때 기준이 돼요.
- 벤치마크
- 모델 성능을 같은 조건에서 비교하려고 만든 시험 문제 모음.
RE:Dox는 어떤 종류의 구조화된 데이터를 처리할 수 있나요?
JSON, XML, CBOR, MessagePack 등 다양한 포맷으로 된 구조화된 데이터를 공통적이고 압축적인 '토큰 DOM/IR' 형태로 파싱해요. 이 통합된 인덱스를 활용해서 읽기, 편집, 형식 변환 등을 수행할 수 있어요.
데이터를 수정하거나 삭제하는 과정은 어떻게 이루어지나요?
RE:Dox는 비대칭적인 접근 방식을 사용해요. 구조가 불분명한 읽기(Deserialize) 경로는 먼저 토큰 DOM을 구축하여 랜덤 액세스 방식으로 처리하기 때문에, 문서 전체를 다시 구성하지 않고도 배열이나 객체를 인플레이스로 수정하거나 삭제할 수 있어요.
이 엔진의 성능적 특징은 무엇인가요?
토큰 DOM의 빠른 파싱 속도와 노드 DOM의 높은 편집 용이성 등 여러 장점을 결합했어요. 벤치마크 결과에 따르면, System.Text.Json 대비 최대 약 2.8배 빠른 자동 병렬 역직렬화 성능을 보여주었어요.