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


Posted in PHP onMay 14, 2017

在网上看了一些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 相关文章推荐
php更改目录及子目录下所有的文件后缀扩展名的代码
Oct 12 PHP
PHP里的中文变量说明
Jul 23 PHP
php标签云的实现代码
Oct 10 PHP
php通过字符串调用函数示例
Mar 02 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 PHP
PHP检测字符串是否为UTF8编码的常用方法
Nov 21 PHP
php短网址和数字之间相互转换的方法
Mar 13 PHP
php打包网站并在线压缩为zip
Feb 13 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
Jun 21 PHP
Laravel4中的Validator验证扩展用法详解
Jul 26 PHP
Yii2.0框架模型多表关联查询示例
Jul 18 PHP
THINKPHP5分页数据对象处理过程解析
Oct 28 PHP
PHP从数组中删除元素的四种方法实例
May 12 #PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 #PHP
php中时间函数date及常用的时间计算
May 12 #PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
May 11 #PHP
PHP 实现浏览记录并按日期分组
May 11 #PHP
thinkPHP5 ACL用户权限模块用法详解
May 10 #PHP
使用WAMP搭建PHP本地开发环境
May 10 #PHP
You might like
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
PHP 程序员的调试技术小结
2009/11/15 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
php查询及多条件查询
2017/02/26 PHP
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
ES6的解构赋值实例详解
2019/05/06 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python实现LRU算法的2种方法
2015/06/24 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
解决DataFrame排序sort的问题
2018/06/07 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
家长给小学生的评语
2014/01/30 职场文书
军训自我鉴定200字
2014/02/13 职场文书
公司门卫岗位职责
2014/03/15 职场文书
yy生日主持词
2014/03/20 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
优秀教师先进材料
2014/12/16 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
二审答辩状范文
2015/05/22 职场文书
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL
利用Java连接Hadoop进行编程
2022/06/28 Java/Android