성능

2012-06-13 5 views
5

는이 같은 XSLT 파일을 통해 같은 문서를 호출 만족할 만합니까?성능

캐싱을 사용하면 시간이 지나면 파일을 읽을 때 오버 헤드가 발생하지 않습니다.

아니면 doc.xm을 변수에 저장하고 해당 변수를 사용하여 쿼리해야합니까?

xslt1을 사용하고 있기 때문에이 경우 xsle과 같은 라이브러리를 사용해야 할 것입니다.

다른 해결책이 있습니까?

참고 :는 XPath의 일부 같은 동적이어야한다 : 나는 그것을 사용하고 난 항상 편의를 위해 변수에 넣어 가지고, 또는 내가 필요한 값을 받았을 때 개인적으로

<xsl:value-of select="document('doc.xml')/root/*[name()=$lang]/foo3" /> 
+0

의심 할 여지없이 항상 성능을 측정 할 수 있습니다 -이 특별한 경우에는 측정이 마이클 케이의 대답을 확인해야합니다. 일반적으로 성능 측정은 누군가를 믿는 것이 아니라 그러한 질문에 대답하는 데 권장되는 방법입니다. –

+0

Dimitre, ofcoure, 우디의 대답에 대한 저의 발언을보십시오. – Peter

답변

2

XSLT 프로세서는 동일한 URL로 document()를 두 번 호출하면 리턴 된 노드가 count (document ('a.xml') | document ('a'xml')) = 1. 문서 캐싱 없이는이 요구 사항을 충족하기가 매우 어렵 기 때문에 각 문서를 한 번만 가져 와서 구문 분석 할 수 있다고 합리적으로 확신 할 수 있다고 생각합니다. 그러나이를 전역 변수에 두는 것은 아무런 해를 끼치 지 않습니다.

+0

합리적으로 확신하기 때문에 나는 지금 :-) 고마워! – Peter

1

단지로 만들려면 읽기 쉽습니다. 마지막으로 사용한 MSXSL을 사용하여이를 노드 트리에 넣고 그런 식으로 액세스 할 수있었습니다.

XSL 프로세서가 어떤 방식 으로든 동일한 파일을 캐시하지 않는다고 상상할 수는 없지만 모든 프로세서에서 다른 것으로 의심되며 기록되지 않은 것 같습니다.

제가 사용하고있는 프로세서에 대해 알고 싶다면 큰 문서를 복사하여 지난 시간에 테스트 할 때가 지요. 오랜 시간이 걸리지 않으며 확실한 유일한 방법입니다. 귀하의 시스템에.

+0

사실, 테스트를위한 대안은 없습니다 ... 그러나 동일한 xslt 파일은 다른 플랫폼에서 호스팅 될 수 있으므로 지침 또는 알려진 '디자인 동작 별'도 환영합니다 .. – Peter

+0

동의합니다. 음, MSXSL4를 사용하면 절대로 성능 차이가 어느 정도인지 알아 차렸으므로 캐싱이 있다고 가정 할 수 있습니다 (큰 파일을 사용하고있었습니다). 사양에 대한 요구 사항은 없지만 완료되지 않았다고 상상하기가 어려울 것입니다. – Woody