Jsoncpp 에서 큰 data를 파일에 저장할때 빠르게 저장하는 방법
글쓴이: 삼구의신 / 작성시간: 화, 2019/01/08 - 7:00오후
jsoncpp 를 이용하고 있습니다.
log data를 jsoncpp로 저장하고 있습니다.
한번 로그를 쌓을 때마다 json data 전체를 파일에 써주다보니
처음엔 괜찮지만 양이 많아 질수록 현저하게 느려집니다...
제 생각에는 시간이 오래 걸리는 이유가 json data를 파일에 저장할 때 string으로 변환하는데
이 부분에서 오래 걸리는것 같습니다.
json data를 string으로 변환하지 않고 그대로 파일에 쓰고 읽고 하는 방법이 있을까요?
아니면 기존 json data에서 추가된 부분만 파일에 저장하는 방법이 있을까요?
아래는 파일에 저장하는 코드입니다.
아래 코드처럼 FastWriter, styledStreamBuilder, stringstreamBuilder? 여러가지를 써봤는데
속도는 비슷합니다.
다른 좋은 방법 있으시다면 조언 부탁드립니다.
Json::FastWriter fastWriter; std::string str = fastWriter.write(root); std::ofstream ofStream; ofStream.open(ALARM_LOG); ofStream << str; ofStream.close();
Forums:
...
잠깐만요... 혹시 원래 로그가 100줄이 있는데 한 줄을 추가해야 하면 원래 파일 내용을 싹 날리고 101줄을 처음부터 다시 쓰는 방식인가요?
...그러면 무슨 짓을 해도 당연히 느리죠. -_-;;;
파일을 열 때 append 모드로 연 다음에 새로 생긴 로그만 추가하고, 파일에 쓴 다음에는 메모리에 있는 로그는 비우세요.
답변 감사합니다^^
JSON 파일로 저장하는데 해당 로그만 파일에 JSON형식에 맞춰서 쓸수가 있나요?
방안 1)
방안 1)
한 건의 로그 내용만 json 객체로 만들고 문자열 변환시 한 줄의 string으로 만들어 기록하는게 좋지 않을까 합니다.
pretty하게 줄바꿈까지 있는 것이 아니고, 한 라인안에 들어가도록 하는 거죠.
로그 확인시에는 한 줄을 복사해서 pretty하게 보여주는 툴을 쓰고요.
Signature :) - "여유를 갖고 행동하되 게을러지지 말자"
댓글 달기