問題:如何在Python 中有效地將一個字串附加到另一個字串?下面的程式碼有更快的替代方法嗎?
<code class="python">var1 = "foo" var2 = "bar" var3 = var1 + var2</code>
答案:
CPython,主要的Python 實現,現在透過嘗試擴展字串來優化字串連接當僅存在一個對字串的引用時就到位。此最佳化導致攤銷 O(n) 時間複雜度。
例如,下列程式碼:
<code class="python">s = "" for i in range(n): s += str(i)</code>
其過去的時間複雜度為 O(n^2),是現在 O(n)。
技術細節:
在CPython 實作中,_PyBytes_Resize 函數負責此最佳化。它允許在不創建新物件的情況下調整字串大小,前提是只有一個模組引用原始字串。
效能分析:
實證測試顯示效能顯著提高對於字串連接操作:
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,可能不存在於其他Python 實作中,例如PyPy 或Jython。在這些情況下,字串連接效能可能與 CPython 實作不同。
以上是Python 中的字串連接:是否有更快的方法來附加字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!