ホームページ  >  記事  >  バックエンド開発  >  Python での文字列の連結: 文字列を追加するより速い方法はありますか?

Python での文字列の連結: 文字列を追加するより速い方法はありますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 04:08:28972ブラウズ

String Concatenation in Python: Is There a Faster Way to Append Strings?

Python での文字列の連結: 効率的なアプローチ

質問: Python で 1 つの文字列を別の文字列に効率的に追加するにはどうすればよいですか?次のコードよりも高速な代替手段はありますか?

<code class="python">var1 = "foo"
var2 = "bar"
var3 = var1 + var2</code>

回答:

主要な Python 実装である CPython は、文字列の拡張を試みることで文字列の連結を最適化するようになりました。文字列への参照が 1 つだけ存在する場合は、その場所に配置されます。この最適化により、時間計算量は O(n) に分割されます。

たとえば、次のコード:

<code class="python">s = ""
for i in range(n):
    s += str(i)</code>

は、以前は O(n^2) の時間計算量でしたが、 now O(n).

技術的な詳細:

CPython 実装では、_PyBytes_Resize 関数がこの最適化を担当します。元の文字列を参照するモジュールが 1 つだけであれば、新しいオブジェクトを作成せずに文字列のサイズを変更できます。

パフォーマンス分析:

実証テストにより、大幅なパフォーマンスの向上が実証されました。文字列連結操作の場合:

String Size Concatenation Time (CPython)
10 1.85 usec
100 16.8 usec
1,000 158 usec
10,000 1.71 msec
100,000 14.6 msec
1,000,000 173 msec

重要な注意事項:

この最適化は CPython に固有であり、PyPy や Jython などの他の Python 実装には存在しない可能性があります。 。このような場合、文字列連結のパフォーマンスは CPython 実装とは異なる可能性があります。

以上がPython での文字列の連結: 文字列を追加するより速い方法はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。