效能提示
使用 XPath、XQuery 及 XSLT 時,請遵循下列提示來增進效能。
| 語言 | 秘訣 |
|---|---|
| XPath | 使用 // 可以是昂貴的作業。 使路徑更明確 (a/b/c 而非 a//c) 可以增進效能。 當路徑開始於大型文件的根目錄或接近其根目錄時,這尤其重要。 |
| last () 函數 (因為它需要完整評估計算項目的順序) 可能是昂貴的作業。 | |
| 具有常數值 (例如 [3]) 的位置述詞通常比具有已計算或從變數擷取的值的位置述詞更有效率。 | |
| XQuery | 如果查詢會匯入一或多個綱目,且相同的查詢會執行多次,請考量在 XQueryExecutable 實例上呼叫 registerImportedSchemas 方法。 如果未呼叫 registerImportedSchemas ,則每次呼叫其中一個執行方法時,都會載入匯入的綱目。 依預設,匯入的綱目只能用來驗證結果樹狀結構; 但呼叫此方法的效果與向 XFactory 登錄綱目的效果相同,這表示它們將用來驗證輸入文件。 |
| XSLT | 參數存取速度比變數慢。 如果您不需要在外部提供參數值,請使用變數。 |
| 使用 xsl: key 元素和 key () 函數可以是擷取節點集的有效方式。 | |
| 型樣相符及 apply-templates 分派通常比 xsl: if 或 xsl: when 陳述式更快。 | |
| 符合型樣中的位置述詞通常昂貴。 | |
| 一般而言,較簡單的比對型樣 (例如 "address") 比複雜型樣 (例如 "/purchaseorder/shipping/customer/postal/address") 更容易處理。 利用您對文件結構及樣式表行為的瞭解,避免不必要的過度指定。 | |
| 對於部分資料模型,必須在文件導覽期間而非在文件載入期間套用 xsl:skip-space 作業。 這可能會增加一些執行時間額外負擔。 | |
| 如果樣式表匯入一或多個綱目,且相同的樣式表將執行多次,請考量在 XSLTExecutable 實例上呼叫 registerImportedSchemas 方法。 如果未呼叫 registerImportedSchemas ,則每次呼叫其中一個執行方法時,都會載入匯入的綱目。 依預設,匯入的綱目只能用來驗證結果樹狀結構; 但呼叫此方法的效果與向 XFactory 登錄綱目的效果相同,這表示它們將用來驗證輸入文件。 | |
| XPath、XQuery 及 XSLT | 解碼和編碼非常昂貴。 一般而言, UTF-8 和 UTF-16 可以比其他編碼更快地讀取及寫入。 |