详谈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 相关文章推荐
使用网络地址转换实现多服务器负载均衡
Oct 09 PHP
PHP has encountered an Access Violation
Jan 15 PHP
PHP 数组教程 定义数组
Oct 23 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
回帖脱衣服的图片实现代码
Feb 15 PHP
ThinkPHP CURD方法之page方法详解
Jun 18 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 PHP
PHP传参之传值与传址的区别
Apr 24 PHP
php仿微信红包分配算法的实现方法
May 13 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
Feb 07 PHP
PHP之多条件混合筛选功能的实现方法
Oct 09 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 事件机制(2)
2011/03/23 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
php语法检查的方法总结
2019/01/21 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
2015/08/23 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
使用JavaScript实现alert的实例代码
2017/07/06 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
Python中常用信号signal类型实例
2018/01/25 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
马智宇婚礼主持词
2014/03/22 职场文书
关于旅游的活动方案
2014/08/15 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
婚宴新娘致辞
2015/07/28 职场文书
利用Nginx代理如何解决前端跨域问题详析
2021/04/02 Servers
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
vue实现列表垂直无缝滚动
2022/04/08 Vue.js