详谈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 相关文章推荐
利用curl抓取远程页面内容的示例代码
Jul 23 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
Apr 29 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
PHP实现通过正则表达式替换回调的内容标签
Jun 15 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
Jan 08 PHP
php实现简单爬虫的开发
Mar 28 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
详解PHP5.6.30与Apache2.4.x配置
Jun 02 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
Sep 30 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
Jun 22 PHP
PHP convert_cyr_string()函数讲解
Feb 13 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递归创建和删除文件夹的代码小结
2012/04/13 PHP
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
php判断当前操作系统类型
2015/10/28 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
了解javascript中变量及函数的提升
2019/05/27 Javascript
Python itertools模块详解
2015/05/09 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
Python实现自动发送邮件功能
2021/03/02 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
python使用selenium实现批量文件下载
2019/03/11 Python
python算法题 链表反转详解
2019/07/02 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
python 实现线程之间的通信示例
2020/02/14 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
Born鞋子官网:Born Shoes
2017/04/06 全球购物
师范应届生教师求职信
2013/11/05 职场文书
会计岗位职责模板
2014/03/12 职场文书
节约用水的口号
2014/06/20 职场文书
财产分割协议书范本
2014/11/03 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
springboot入门 之profile设置方式
2022/04/04 Java/Android
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS