Maison  >  Article  >  développement back-end  >  Concaténation de chaînes en Python : existe-t-il un moyen plus rapide d'ajouter des chaînes ?

Concaténation de chaînes en Python : existe-t-il un moyen plus rapide d'ajouter des chaînes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 04:08:281054parcourir

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

Concaténation de chaînes en Python : une approche efficace

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn