2009-09-10 3 views
2

파일, 웹 서버, 다른 서버 등 모든 XML 소스에서 요소 이름 값 (시계열 데이터) 쌍을 가져 오는 응용 프로그램을 작성해야합니다. 응용 프로그램은 XML을 소비하고 관심있는 값을 가져올 것이므로 XML 문서 크기가 커지고이 문서의 빈도가 높을 수있는 매우 빠른 속도 (50000 이벤트/초 이상)를 가져야합니다. 예 : 2500 파일/분 - 500MB 이상의 XML 데이터/파일).은 C++ 용으로 가장 효율적인 XML 구문 분석기입니까?

나는 단지 당신이 경험 한 방식을 내가이 문제에 접근해야한다고 생각하고 싶습니다. 나는 비록 당신이 나에게 제안하는 해결책을 아무리 힘들거나 쉽다해도 시작할 수있는 초보자이다.

대단히 감사합니다.

+2

그래서 ... 애플리케이션이 약 2500 * 500 * 2^20/60 = 20.3GB/s의 데이터를로드, 구문 분석 및 추출해야합니다. 한 대의 PC에 배포하지 않기를 바랍니다. – unwind

+2

이런 종류의 성능이 정말로 필요한 경우 XML *을 사용하지 마십시오. – bendin

+0

http://stackoverflow.com/questions/170686/best-open-xml-parser-for-c – bobobobo

답변

4

SAX 구문 분석을 사용하는 경우 병목 현상은 XML 문자열 처리가 아니라 관련된 I/O입니다. 500 MB의 숫자가 주어지면 에 DOM 파싱 대신 SAX 파싱을 수행하는이 있다고 말하고 싶습니다. 그래서, SAX 타입의 인터페이스를 가진 것은 아무 문제가 없습니다.

+0

Poco의 XML 라이브러리에는 멋진 SAX 파서가 있습니다. – StackedCrooked

2

저는 Xerces의 팬입니다. 귀하의 응용 프로그램에 가장 적합한 성능을 제공하는 제품을 시험해보아야 할 것 같습니다. 워렌 (Warren)과 마찬가지로 SAX 프로세싱을 사용하기를 원할 것입니다. 현실적으로 성능이 정말로 필요한 경우 전문 XML 어플라이언스를 사용하여 처리해야합니다.

0

나는 우리 프로젝트에서 libxml2을 사용합니다. SAX와 DOM을 모두 지원합니다. 워렌 영 (Warren Young)이 말했듯이 SAX를 사용해야합니다. Expat를 시도해 볼 수 있습니다.

관련 문제