2011-02-07 4 views
0

XPath 쿼리가 많은 XML 문서가 거의 없습니다. XML 문서를 변경하기 위해 디자인 한 앱만 원한다. :). 나는 문서의 무결성을 검사하고 누군가를 망쳐 놓는 것을 막는 메커니즘을 가지고있다.XML 구문 분석 성능 향상

이제 C# .Net을 사용하는 XML 구문 분석은 만족스럽지 않은 성능을 제공합니다.

내가 가지고있는 옵션이 있습니다.

  1. 새 파서 (Even port to C++)를 사용하십시오.
  2. 스키마를 작성하십시오 (오랜 시간이 걸릴 수 있음). 구문 분석 성능이 향상됩니까?
  3. 더 많은 .NET 클래스 또는 라이브러리를 가지고 놀아 라. XMLReader는 내가 지금 사용하고있는 것입니다.

내가 쓸 시간이 지나면 누가 더 미소 지도록 할 수 있습니까?

일부 정보 : 일부/모든 속성을 구문 분석하고 읽으 려합니다. 쓰기가 의사가 내가 원하는 바가 아니야. 나중에 XSD 지원을 원할 수도 있습니다. (Donno는 나를 위해 미래를 열어 줍니 다.)

현재 성능 : 1000MB의 파일에서 14 초 만에 50MB의 XML.

열기는 파일을 닫는 또한 내가 1/2이 시간을 찾고 있어요 같아요 약간의 시간! (그것은 포함)

걸립니다.

답변

2

Improving XML Performance을 읽으셨습니까?

당신이하고있는 일과 타이밍을 정확히 보여주는 몇 가지 코드를 보지 않고는 느린 것에 대해 논평하기는 어렵지만 느린 자체의 구문 분석은 아닌 것으로 생각됩니다.

+0

감사합니다. 필자는이를 읽고 개별적으로 IO에 대한 수치를 프로파일 링합니다. 저는 이것을 답으로 받아 들여 질문을 닫을 것입니다. 나는 너무 컸다. – Vignesh

+0

참고 자료는 2004 년에 작성되었습니다. – Natrium

1

Microsoft에서 이미 정의한 구문 분석기를 새로 만들지 않는 것이 좋습니다. 스키마 (XmlSerializer 포함)를 사용하면 코딩 프로세스가 크게 단순화됩니다. 또한 sgen (XML Serializer Generator)을 사용하면 creates an XML serialization assembly for types in a specified assembly in order to improve the startup performance of a XmlSerializer when it serializes or deserializes objects of the specified types을 사용할 수 있습니다.

또한 xsd.exe 도구를 사용하여 xml 파일에서 스키마를 생성 할 수 있습니다. 생성 된 스키마는 사용자의 취향에 맞게 수정할 수 있습니다. 올바르게 용어 "XML 파서"를 사용하는 경우

+0

스키마가 성능을 개선합니까? 나는 아무것도 연재하지 않을거야. xsd 생성기 주셔서 감사합니다. XML에는 거의 1000 개의 태그와 속성이 있습니다. 내가 스키마를 생성 한 후에 엉망이되었습니다. 래퍼로 [pugixml] (http://code.google.com/p/pugixml/)을 사용하려고 생각했습니다 – Vignesh

+0

@Vignesh, xml 파일의 샘플을 게시 할 수 있습니까? xsd이면 흐름은 다음과 같습니다. 1. xsd를 사용하여 스키마에서 클래스 정의를 생성합니다. 2. XmlSerializer를 사용하여 XML을 비 직렬화 (메모리에로드)합니다. 3. xml 요소를 사용합니다. –

+1

@Vignesh, XPath는 XML을 쿼리하는 더 빠른 방법입니다. 그러나 미리 쿼리하려는 정보의 위치를 ​​알고있는 경우에만 유용합니다. 그러나 직렬화 기의 사전 생성 (sgen 사용)은 응용 프로그램의 시작 성능을 크게 향상시킬 수 있습니다 (메모리 소비는 동일하게 유지되지만). –

0

먼저 더 많은 정보, 궁금하다. 많은 사람들이 파싱의 일부인 것처럼 (예를 들어 XSLT를 사용하여) 파싱 한 후에 XML에서 처리하는 것을 잘못 참조하기 때문에 묻습니다.

두 번째로 파서에서 어떤 성능을 얻고 있으며 어떤 성능이 필요합니까? 성능 향상을위한 모든 운동은이 두 숫자로 시작해야하며, 얼마나 다른지 알기 전까지는 아무런 제안을하지 않아도됩니다.

스키마에 대해 원본 문서의 유효성을 검사하면 구문 분석 시간이 줄어들지 않고 일반적으로 증가합니다.

+0

몇 가지 정보를 업데이트했습니다. 난 그냥 xpath 쿼리를 실행, 그것을 구문 분석 해요. 이제 내 관찰은 TinyXML이고 Pugixml에는 XSD 지원이 없으므로 나중에 필요할 수 있습니다. 나는 XSD 기반 유효성 검사가 미래에 연결될 수 있는지 고려 중입니다. – Vignesh