详谈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版(3)
Oct 09 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
destoon实现商铺管理主页设置增加新菜单的方法
Jun 26 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
Jul 15 PHP
PHP 正则表达式常用函数
Aug 17 PHP
php中file_get_content 和curl以及fopen 效率分析
Sep 19 PHP
php对文件进行hash运算的方法
Apr 03 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
Jul 13 PHP
Laravel手动分页实现方法详解
Oct 09 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 PHP
php实现微信支付之现金红包
May 30 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 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.MVC的模板标签系统(五)
2006/09/05 PHP
php.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
浅谈php提交form表单
2015/07/01 PHP
PHP中单例模式的使用场景与使用方法讲解
2019/03/18 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
详解python单例模式与metaclass
2016/01/15 Python
使用Python实现简单的服务器功能
2017/08/25 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
红领巾广播站广播稿
2014/02/01 职场文书
优秀幼教自荐信
2014/02/03 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
python实现的人脸识别打卡系统
2021/05/08 Python
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers