병렬 json 파서를 만들어봤습니다.

DongWook Lee@Google의 이미지

안녕하세요

파서를 만드는 것에 관심이 많은 1인입니다.

simdjson과 multi-thread를 이용해서 병렬 파서를 어느 정도 만들었습니다.

여러모로 많이 부족하긴 하지만 ㅠㅠ

링크에서 다운받으신후에 claujson.h, claujson.lib를 비주얼스튜디오2022등

(정확하게 C++17, Release가 필요합니다.)

에서 세팅을 합니다. 그리고 별도로 mimalloc같은 라이브러리도 같이 세팅을 하셔야 합니다.

(표준 new, delete는 여러 쓰레드에서 동적 할당 및 해제를 할 때 너무? 느리기 때문에 mimalloc같은

라이브러리가 있어야 제가 원하는 성능이 나오더군요)

링크 https://github.com/vztpv/scj3

다른 파서와 간단한 테스트에서 파싱 시간 (파싱 파일 citylots.json, 180메가)

// test with intel i7 10700 cpu (8코어 16쓰레드)

// 자작 파서 - 아마도 모든 코어 사용? Parse End 254 // 254ms (parsing)

// rapidjson parse 640ms

// boost/json parse 543ms

// yyjson parse 235 125 360ms (immutable 235ms, immutable -> mutable 125ms, total 360ms)

파일이 어느 정도 커야 (10메가정도?) 다른 파서와 비슷하거나 빠른 것 같습니다.