详谈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你的验证码安全码?
Jan 02 PHP
使用php判断网页是否gzip压缩
Jun 25 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
学习php开源项目的源码指南
Dec 21 PHP
微信公众平台消息接口校验与消息接口响应实例
Dec 23 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
Laravel学习教程之request validation的编写
Oct 25 PHP
php递归函数怎么用才有效
Feb 24 PHP
PHP实现的获取文件mimes类型工具类示例
Apr 08 PHP
PHP实现简单计算器小程序
Aug 28 PHP
yii2 在控制器中验证请求参数的使用方法
Jun 19 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遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
2013/11/13 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
iframe 父窗口和子窗口相互的调用方法集锦
2010/12/15 Javascript
TBCompressor js代码压缩
2011/01/05 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
jQuery中:not选择器用法实例
2014/12/30 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
微信小程序之圆形进度条实现思路
2018/02/22 Javascript
Python操作串口的方法
2015/06/17 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
Python求出0~100以内的所有素数
2018/01/23 Python
Django model序列化为json的方法示例
2018/10/16 Python
对python中的argv和argc使用详解
2018/12/15 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
关于css中margin的值和垂直外边距重叠问题
2020/10/27 HTML / CSS
售后主管岗位职责
2013/12/08 职场文书
寒假思想汇报
2014/01/10 职场文书
协议书怎么写
2014/04/21 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers
浅析Django接口版本控制
2021/06/26 Python
Python学习之包与模块详解
2022/03/19 Python
python游戏开发Pygame框架
2022/04/22 Python
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers