Performances str_replace

Le problème exposé dans ce sujet a été résolu.

Bonjour

voici mon problème en gros :

j'ai une marre de texte que j'aimerais "couper" en ajoutant une image, et ce sur toutes les pages du site

Le texte est présent dans un fichier PHP à part…

je vois donc deux solutions pour ce faire.

solution 1 (avec str_replace)
1
<?php $montexte = str_replace('IMAGEICI','<img [...] />',$montexte); ?>

donc là tous les IMAGEICI (il n'y en a qu'un normalement) seront remplacés par une image

solution 2

je "découpe" ma marre de texte en deux blocs, $montexte1 et $montexte2

1
<?php $montexte = $montexte1.'<img [...] />'.$montexte2; ?>

a priori je pencherai plutôt vers la solution 1 qui est plus dynamique, et qui m'évite de ré-écrire tous mes fichiers pour avoir deux variables

Cependant, je me pose la question de la performance…

quelle solution vous paraît la plus appropriée niveau perfs ?

merci !

+0 -0

Bonjour,

Je pense que le mieux est d'essayer les deux solutions avec un texte identique et de récupérer le temps d’exécution (microtime()) des deux solutions, de cette manière tu seras fixé sur la solution la plus rapide des deux.

Bien cordialement, SinGa.

Il est très probable qu'il n'y ai que très peu de différences en terme de performances. J'aurais quand même tendance à penser que la version str_replace est plus performante que la deuxième puisqu'elle est implémenté par derrière en C et utilise probablement certains algorithmes plus optimisés que des algorithmes naïfs.

Au passage, ta deuxième solution nécessite la séparation de ton fichier en plusieurs parties, ce qui n'est très probablement pas gratuit, et même probablement ce qui sera le plus coûteux.

C'est intéressant d'essayer de faire du code performant, mais ça ne doit être un soucis que si tu te rends compte qu'il y a un problème de performance. Il vaut mieux faire un code simple qui fonctionne qu'un code complexe qui a plus de chances de comporter des bugs, ce qui va aussi dans le sens de str_replace.

De manière générale, si tu as le choix entre utiliser quelque chose qui est déjà fait et la refaire, il est extrêmement rare qu'il soit plus intéressant de la refaire.

En effet il y a peu de différences, mais si tu cherches vraiment l'optimisation et que tu peux implémenter cette méthode, fais-le avec sprintf. Le sujet date un peu alors les benchmarks ont peut-être évolué, mais ça te donnera une idée : Benchmarks sur les string replacement

Sinon dans tous les cas, comme le disait Berdes, une fonction native sera toujours plus rapide qu'une bidouille maison.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte