详谈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+mysql开源XNA 聚合程序发布 下载
Jul 13 PHP
PHP通过header实现文本文件下载的代码
Aug 08 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
php去除字符串换行符示例分享
Feb 13 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
Sep 27 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
Mar 21 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
PHP基于SPL实现的迭代器模式示例
Apr 22 PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 PHP
Laravel的加密解密与哈希实例讲解
Mar 24 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
第十五节--Zend引擎的发展
2006/11/16 PHP
PHP实现本地图片转base64格式并上传
2020/05/29 PHP
javascript String 对象
2008/04/25 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
Jquery获取radio选中值实例总结
2019/01/17 jQuery
详解JavaScript作用域和作用域链
2019/03/19 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
opencv与numpy的图像基本操作
2019/03/08 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
Python中Selenium模块的使用详解
2020/10/09 Python
Python用Jira库来操作Jira
2020/12/28 Python
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
Ralph Lauren拉夫·劳伦美国官网:带有浓郁美国气息的高品味时装品牌
2017/11/01 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
离婚财产分割协议书
2015/08/11 职场文书
高中化学教学反思
2016/02/22 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python
公历12个月名称的由来
2022/04/12 杂记