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

yipeiwu_com7年前PHP代码库

在网上看了一些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 的效率问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【宜配屋www.yipeiwu.com】。

相关文章

PHP中trim()函数简单使用指南

string trim ( string $str [, string $charlist ] ) - 去除字符串首尾处的空白字符(或者其他字符)   trim()函数当第二个参数为空时...

php使用NumberFormatter格式化货币的方法

本文实例讲述了php使用NumberFormatter格式化货币的方法。分享给大家供大家参考。具体实现方法如下: $amount = '12345.67'; $formatter =...

编写php应用程序实现摘要式身份验证的方法详解

通基本身份认证一样,也可以使用PHP网页处理HTTP请求报头字段来匹配摘要式身份验证信息。例如下边的代码使用header()函数要求客户端使用Digest验证,它在HTTP消息报头中增加...

PHP Wrapper在SAE上的应用方法

本文讲述了PHP Wrapper在SAE上的应用方法。分享给大家供大家参考,具体如下: 一、PHP Wrapper是什么 自PHP 4.3开始,PHP开始允许用户通过stream_wra...

PHP+FLASH实现上传文件进度条相关文件 下载

PHP之所以很难实现上传进度条是因为在我们上传文件到服务器的时候,要等到文件全部送到服务器之后,才执行相应的php文件。在这之前,文件数据保存在一个临时文件里面,而php无法获得这个文件...