详谈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中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
php中将字符串转为HTML的实体引用的一个类
Feb 03 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
Jun 21 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
全面解析PHP操作Memcache基本函数
Jul 14 PHP
PHP构造二叉树算法示例
Jun 21 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
Nov 26 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 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
php+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
php实现的RSS生成类实例
2015/04/23 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
chosen实现省市区三级联动
2018/08/16 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
Python使用剪切板的方法
2017/06/06 Python
Python SQLite3简介
2018/02/22 Python
python实现ID3决策树算法
2018/08/29 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
python3下pygame如何实现显示中文
2020/01/11 Python
pytorch实现特殊的Module--Sqeuential三种写法
2020/01/15 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
python中有函数重载吗
2020/05/28 Python
Django REST 异常处理详解
2020/07/15 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
几个判断型的面试题
2012/07/03 面试题
网吧消防安全责任书
2014/07/29 职场文书
售票员岗位职责
2015/02/15 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
同学联谊会邀请函
2019/06/24 职场文书