详谈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中使用XML
Oct 09 PHP
php.ini 中文版
Oct 28 PHP
PHP教程 变量定义
Oct 23 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
Aug 21 PHP
PHP内核探索:变量存储与类型使用说明
Jan 30 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 PHP
php实现的单一入口应用程序实例分析
Sep 23 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
php提取微信账单的有效信息
Oct 01 PHP
PHP实现读取文件夹及批量重命名文件操作示例
Apr 15 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 PHP
通过实例解析PHP数据类型转换方法
Jul 11 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小偷相关截取函数备忘
2010/11/28 PHP
php学习笔记之 函数声明(二)
2011/06/09 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
php共享内存段示例分享
2014/01/20 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
JSONP之我见
2015/03/24 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
解读Bootstrap v4 sass设计
2016/05/29 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
Python实现的检测网站挂马程序
2014/11/30 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
Python函数any()和all()的用法及区别介绍
2018/09/14 Python
python__name__原理及用法详解
2019/11/02 Python
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
幼儿园中班下学期评语
2014/04/18 职场文书
企业理念标语
2014/06/09 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
寒假生活随笔
2015/08/15 职场文书
《我要的是葫芦》教学反思
2016/02/18 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android