パフォーマンスのヒント
XPath、XQuery、および XSLT を使用する際にパフォーマンスを向上させるには、 以下のヒントに従ってください。
言語 | ヒント |
---|---|
XPath | // を使用すると、操作に負荷がかかります。パスをより明示的にすると、 パフォーマンスが向上します (例えば、a//c と指定せずに a/b/c と指定します)。このことは、パスが大規模文書のルートまたはその近くで開始される場合には、特に重要です。 |
last() 関数は、項目をカウントするためのシーケンスを十分に評価する必要があるため、 負荷がかかる操作になります。 | |
定数による定位置述部 ([3] など) は、一般に、計算後の値による定位置述部や 変数から取得された値による定位置述部より効率的です。 | |
XQuery | 照会が 1 つ以上のスキーマをインポートし、その照会が 2 回以上実行される場合には、XQueryExecutable インスタンスで registerImportedSchemas メソッドを呼び出すことを検討してください。 registerImportedSchemas が呼び出されない場合、いずれかの execute メソッドが呼び出されるたびに、インポートされたスキーマがロードされます。デフォルトでは、インポートされたスキーマは、結果ツリーを確認するためにのみ使用できます。しかし、このメソッドを呼び出すことは、このスキーマを XFactory に登録することと同じ効果を持ちます (つまり、入力文書を確認するためにこのスキーマが使用されます)。 |
XSLT | パラメーターは、変数よりアクセス時間がかかります。外部からパラメーターの値を指定する 必要がない場合には、変数を使用してください。 |
xsl:key エレメントおよび key() 関数の使用は、 ノード・セットの検索に効果的な方法です。 | |
パターン・マッチングおよび apply-templates ディスパッチは、 一般的に、xsl:if や xsl:when 文より高速です。 | |
パターン・マッチングにおける定位置述部は、一般的に負荷がかかります。 | |
一般に、簡単なパターン・マッチング ("address" など) のほうが、 複雑なパターン・マッチング ("/purchaseorder/shipping/customer/postal/address" など) よりも 処理に負荷がかかりません。文書の構造およびスタイルシートの動作を理解しておくと、 必要以上に詳述せずにすみます。 | |
一部のデータ・モデルでは、xsl:skip-space 操作を文書のロード時ではなく、 文書のナビゲーション時に適用する必要があります。これは、多少、実行時にオーバーヘッドがかかります。 | |
スタイル・シートが 1 つ以上のスキーマをインポートし、そのスタイル・シートが 2 回以上実行される場合には、XSLTExecutable インスタンスで registerImportedSchemas メソッドを呼び出すことを検討してください。 registerImportedSchemas が呼び出されない場合、いずれかの execute メソッドが呼び出されるたびに、インポートされたスキーマがロードされます。デフォルトでは、インポートされたスキーマは、結果ツリーを確認するためにのみ使用できます。しかし、このメソッドを呼び出すことは、このスキーマを XFactory に登録することと同じ効果を持ちます (つまり、入力文書を確認するためにこのスキーマが使用されます)。 | |
XPath、XQuery、および XSLT | デコードおよびエンコードは、負荷がかかります。一般に、 UTF-8 および UTF-16 は、他のエンコードより速く読み書きできます。 |