Question :Comment puis-je ajouter efficacement une chaîne à une autre en Python ? Existe-t-il une alternative plus rapide au code suivant ?
<code class="python">var1 = "foo" var2 = "bar" var3 = var1 + var2</code>
Réponse :
CPython, la principale implémentation de Python, optimise désormais la concaténation de chaînes en tentant d'étendre la chaîne en place lorsqu'une seule référence à une chaîne est présente. Cette optimisation se traduit par une complexité temporelle O(n) amortie.
Par exemple, le code suivant :
<code class="python">s = "" for i in range(n): s += str(i)</code>
qui avait autrefois une complexité temporelle de O(n^2), est maintenant O(n).
Détails techniques :
Dans l'implémentation CPython, la fonction _PyBytes_Resize est responsable de cette optimisation. Il permet le redimensionnement des chaînes sans créer de nouvel objet, à condition qu'un seul module fasse référence à la chaîne d'origine.
Analyse des performances :
Les tests empiriques démontrent l'amélioration significative des performances. pour les opérations de concaténation de chaînes :
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 |
Remarque importante :
Cette optimisation est spécifique à CPython et peut ne pas être présente dans d'autres implémentations Python, telles que PyPy ou Jython . Dans ces cas, les performances de concaténation de chaînes peuvent différer de l'implémentation de CPython.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!