StringBuilderによる長い文字列の作成
質問
大量の文字列を1つの長い文字列に連結するにはどのようにするのが最適ですか?
一連のレコードを9 MBのファイルにシリアル化するために8分かかります。
回答
大量の短い文字列を1つの長い文字列やいくつかの長い文字列に連結するには、StringBuilderを使用します。
Extension Text(6.0以降のシステムコンポーネント)では、StringBuilders用のAPIが提供されています。
短い文字列を作成する場合は「ab」+「cd」のような単純な文字列の連結でも十分高速ですが、大量のデータを処理する場合は完全に避ける必要があります。特に、文字列の連結によってさらに長い文字列の一部を作成する場合は注意してください。
以下の例では、文字列の連結を使用して短い文字列を作成し、それをStringBuilder_Append()に渡しています。
これは短い文字列の連結が何回も呼び出されることを意味します。実際に、1回の最適化されたAppendと4回の単純な文字列の連結を行っています。特定のユースケースでは、9 MBのファイルの生成に8分かかります。
代わりに、以下に示すように、最適化されたStringBuilder_Append()のみを使用して長い文字列を作成します。
8分かかっていた特定のユースケースが30秒未満になりました。
文字列の連結によって、さらに長い文字列の一部を作成する場合は注意してください。文字列の連結は、パフォーマンスに大きな影響を及ぼする可能性があります。