부스트 속성 트리를 사용하여 json 파일을로드/덤프합니다. 그러나 성능이 매우 나쁩니다.json 파일에서 부스트 속성 트리를 구성하는 것이 성능이 매우 나쁜가요?
예를 들어 크기가 1.8M 인 json 파일이 있습니다. boost C++ 프로그램은 json 파일을로드하고 특성 트리를 구성하는 데 3 초를 소비합니다. 파이썬을 사용하여 json 파일을로드하는 경우 0.1 초만 필요합니다. 그리고 파이썬은 모든 것을 객체로 만들 수도 있습니다.
는 C++ 프로그램과 같은 것입니다 : 같은 일을하고있다
int main(int argc, char **argv){
std::fstream fin;
fin.open(argv[1], std::fstream::in);
if (!fin.is_open()){
ASSERT(false);
}
boost::property_tree::ptree pt;
try{
read_json(fin, pt);
}catch(ptree_error & e) {
ASSERT(false);
}
fin.close();
return 0;
}
파이썬 스크립트와 같은 것입니다 :
#!/usr/bin//python
import sys
import json
fp = open(sys.argv[1],"r")
objs = json.load(fp)
내가 최신 부스트 (1.54)을 시도했다. 이 작업을 수행하는 데는 여전히 속도가 느립니다.
조언이 있으면 감사드립니다.
해결 방법이 없다면 json을로드/덤프 할 다른 C++ 라이브러리를 알고 계십니까?
C++ 프로그램을 어떻게 컴파일 했습니까? 최적화를 사용 했습니까? – filmor
최적화가 컴파일 된 상태입니다. – limi
C++ 프로그램이 대부분의 시간을 보내는 곳을 알기 위해 프로필을 만들었습니까? 'strace'처럼 단순한 것조차도 잠재적 인 병목 현상을 보여줄 수 있습니다. –