当前位置: 首页 > 编程笔记 >

详谈php中 strtr 和 str_replace 的效率问题

潘安平
2023-03-14
本文向大家介绍详谈php中 strtr 和 str_replace 的效率问题,包括了详谈php中 strtr 和 str_replace 的效率问题的使用技巧和注意事项,需要的朋友参考一下

在网上看了一些php优化的指南,里面提到:使用strtr 函数 比 str_replace快4倍。 本着探索的精神动手验证。

代码

$string = 'abcdefg';
set_time_limit(300);
 
$start = microtime(true);
for ($i = 0; $i < 10000000; $i++) {
  $str = str_replace('a', '123', $string);
}
 
echo microtime(true)-$start, '<br />';
 
$start = microtime(true);
for ($i = 0; $i < 10000000; $i++) {
  $str = strtr($string, ['a'=>'123']);
}
 
echo microtime(true)-$start, '<br />';

平台(笔记本):win10 + i5 + 8G固态

环境1:php 5.6 nts +apache

测试条件: 10000000次循环

结果:    str_replace :3.2446131706238 秒   
               strtr: 36.379708051682 秒 

环境2:php 7.0 nts +apache

测试条件: 10000000次循环

结果:    str_replace :9.3426380157471秒   
               strtr: 9.3660399913788秒 

环境3:php 5.6 nts + nginx

测试条件: 10000000次循环

结果:    str_replace :3.2784769535065 秒   
               strtr: 35.701732158661 秒 

环境4:php 7.0nts +nginx

测试条件: 10000000次循环

结果:    str_replace :9.5572259426117 秒   
               strtr: 9.4987349510193 秒 

意外发现, 5.6版本 str_replace  比 strtr 效率高10+倍,  7.0版本效率基本相同, 但5.6的 str_replace  竟比 7.0高 3倍

ps:以上测试,每个环境都测试了3+次,结果取平均值

以上这篇详谈php中 strtr 和 str_replace 的效率问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我很难理解什么时候会更合适,反之亦然。尽管替换子字符串的顺序颠倒了,但使用这两个函数似乎都可能获得完全相同的结果。例如: 这个输出 除了语法之外,使用一种语法还有什么好处?在任何情况下都不足以达到预期的结果吗? 问题答案: 第一个区别: 之间不同的行为的一个有趣的例子,并在PHP手册的注释部分: 结果是:“ ZDDB” 但是,此返回:“ ZDDD”(因为根据我们的数组,B = D) 要

  • 问题内容: php具有以下 功能: 它用相应的值替换字符串中的字典键,并且(重要)不替换已经替换的字符串。天真地尝试在python中编写相同的代码: 返回不是我们想要的(再次被替换)。如何更改上述功能,使其行为类似于其php对应项? (如果可能,我希望没有正则表达式的答案)。 Upd:这里有一些很好的答案。我对它们进行了计时,发现对于短弦琴,Gumbo的版本似乎是最快的,而在长弦琴上,胜者是解决方

  • 本文向大家介绍PHP中strtr字符串替换用法详解,包括了PHP中strtr字符串替换用法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP中strtr字符串替换用法。分享给大家供大家参考。具体分析如下: strtr(string,from,to)或者strtr(string,array) 首先针对strtr函数第一种方式,我们看看下面的举例,代码如下: 得到的结果是: 1 I l

  • 本文向大家介绍详谈PHP编码转换问题,包括了详谈PHP编码转换问题的使用技巧和注意事项,需要的朋友参考一下 最近恰好要用到unicode编码的转换,就去查了一下php的库函数,居然没找到一个函数可以对字符串进行Unicode的编码和解码!也罢,找不到的话就自己实现一下了。。。 Unicode和Utf-8编码的区别 Unicode是一个字符集,而UTF-8是Unicode的其中一种,Unicode是

  • 本文向大家介绍详谈jQuery中的this和$(this),包括了详谈jQuery中的this和$(this)的使用技巧和注意事项,需要的朋友参考一下 网上有很多关于jQuery的this和$(this)的介绍,大多数只是理清了this和$(this)的指向,其实它是有应用场所的,不能一概而论在jQuery调用成员函数时,this就是指向dom对象。 $(this)指向jQuery对象是无可厚非的

  • 问题内容: 我正在尝试为我的网站创建一个小型搜索。我曾尝试使用全文本索引搜索,但无法使用它。这是我想出的: 因此,基本上,它搜索数据库中所有条目的所有标题,正文和标记。这工作得很好,但是我只是想知道它的效率如何?这也只适用于小型博客。无论哪种方式,我都只是想知道是否可以提高效率。 问题答案: 无法提高查询效率。一旦获得大量数据,使用通配符查询将比使用全文本索引解决方案慢数百倍或数千倍。 您应该看一