programing

C++용 가장 빠른 JSON 리더/라이터

firstcheck 2022. 7. 5. 00:04
반응형

C++용 가장 빠른 JSON 리더/라이터

C++ JSON 파서와 라이터가 필요합니다.속도와 신뢰성은 매우 중요합니다.인터페이스가 좋든 나쁘든 상관없습니다.부스트 베이스든 아니든 C파서라도 괜찮습니다(C++파서보다 상당히 빠릅니다).

이용 가능한 JSON 파서의 속도를 경험하신 분은 조언을 부탁드립니다.

rapidjson은 빠르고 작은 메모리 공간을 사용하도록 설계된 C++ JSON 파서/제너레이터입니다.

YAJL 및 JsonCPP와의 퍼포먼스 비교가 있습니다.


업데이트:

저는 29개의 C/C++ JSON 라이브러리를 적합성과 성능 측면에서 평가하는 오픈 소스 프로젝트 Native JSON 벤치마크를 만들었습니다.이것은 유용한 참고 자료가 될 것입니다.

https://github.com/quartzjer/js0n

가장 못생긴 인터페이스가 가능하지만, 원하는 대로 합니다.할당은 없습니다.

http://zserge.com/jsmn.html 또 하나의 제로 어프로치입니다.

위에 게시된 솔루션은 동적 메모리 할당을 수행하므로 데이터 구조에 따라 어느 시점에서는 속도가 느려질 수밖에 없으며 임베디드 시스템처럼 힙 제약이 많은 환경에 포함시키는 것은 위험할 수 있습니다.

vjson, rapidjson 및 sajson의 벤치마크를 보려면 http://chadaustin.me/2013/01/json-parser-benchmarking/를 방문하십시오.

그리고 질문의 "작가" 부분에 답하기 위해 나는 당신이 효율적인 사람을 이길 수 있을지 의심스럽다.

printf("{%s:%s}",name,value)

모든 라이브러리에서 구현 - 물론 printf/frintf 구현 자체가 가볍다고 가정합니다.

편집: 다시 말씀드리지만 RapidJson은 MemoryPoolAllocator를 통해서만 스택에 대한 할당을 허용하며 GenericReader의 기본값이 됩니다.비교는 하지 않았지만 여기에 나와 있는 다른 어떤 것보다도 강력할 것으로 예상됩니다.또한 종속성이 없으며 예외를 두지 않기 때문에 임베디드에 적합할 수 있습니다.완전한 헤더 기반의 lib이므로 어디에나 쉽게 포함할 수 있습니다.

http://lloyd.github.com/yajl/

http://www.digip.org/jansson/

속도 비교는 잘 모르겠지만, 첫 번째 JSON 데이터에서는 한 번에 작은 덩어리로만 해석되므로 모든 데이터를 한 번에 메모리에 저장할 필요가 없습니다(라이브러리/사용 사례에 따라 속도가 빨라지거나 느려질 수 있습니다).

언급URL : https://stackoverflow.com/questions/3512650/fastest-json-reader-writer-for-c

반응형