详谈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 长文章分页函数 带使用方法,不会分割段落,翻页在底部
Oct 22 PHP
php中的一些数组排序方法分享
Jul 20 PHP
php教程之phpize使用方法
Feb 12 PHP
一个PHP的ZIP压缩类分享
May 04 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
Nov 20 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
Dec 17 PHP
php中return的用法实例分析
Feb 28 PHP
yii2分页之实现跳转到具体某页的实例代码
Jun 02 PHP
php基于openssl的rsa加密解密示例
Jul 11 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 PHP
tp5递归 无限级分类详解
Oct 18 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
Destoon实现多表查询示例
2014/08/21 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
详解node nvm进行node多版本管理
2017/10/21 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
Python实例之wxpython中Frame使用方法
2014/06/09 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
浅谈Python反射 &amp; 单例模式
2019/03/21 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
基于python实现检索标记敏感词并输出
2020/05/07 Python
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
在校学生职业规划范文
2014/01/08 职场文书
巧克力蛋糕店创业计划书
2014/01/14 职场文书
写给学生的新学期寄语
2014/01/18 职场文书
《兰亭集序》教学反思
2014/02/11 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
出生证明格式
2015/06/15 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript
科普 | 业余无线电知识-波段篇
2022/02/18 无线电