PHP 字符串长度判断效率更高的方法


Posted in PHP onMarch 02, 2014

有经验的程序员发现,php判断字符串长度,使用isset()在速度上比strlen()更快,执行效率更高。
即:

$str = ‘aaaaaa';
if(strlen($str) > 6)
VS
if(!isset($str{6})

用例子简单测试下,情况基本属实,isset()效率几乎是strlen()的3倍。
示例:
<?php
 //使用strlen方式
 $arr = "123456";
 $sTime = microtime(1);
 if(strlen($arr) > 6){
 // echo 1;
 }
 echo microtime(1) -  $sTime;

输出:0.00035595893859863
<?php
//使用isset($arr{})方式
 $arr = "123456";
 $sTime = microtime(1);
 if(!isset($arr{6})){
 // echo "1\r\n";
 }
 echo microtime(1) - $sTime;

输出:0.00019097328186035

isset()速度为什么比strlen()更快
strlen()函数函数执行起来相当快,因为它不做任何计算,只返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。
在某些情况下,使用isset() 技巧可以加速执行你的代码。因为与isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。

因此调用isset()比strlen()快。

PHP 相关文章推荐
PHP生成静态页
Nov 25 PHP
PHP面向对象编程快速入门
Dec 14 PHP
php chr() ord()中文截取乱码问题解决方法
Sep 08 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
ThinkPHP实现支付宝接口功能实例
Dec 02 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
php对xml文件的增删改查操作实现方法分析
May 19 PHP
详解PHP swoole process的使用方法
Aug 26 PHP
PHP自动载入类文件函数__autoload的使用方法
Mar 25 PHP
PHP FileSystem 文件系统常用api整理总结
Jul 12 PHP
laravel框架邮箱认证实现方法详解
Nov 22 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 #PHP
PHP代码优化之成员变量获取速度对比
Feb 28 #PHP
php递归方法实现无限分类实例代码
Feb 28 #PHP
PHP中常用的转义函数
Feb 28 #PHP
PHP中鲜为人知的10个函数
Feb 28 #PHP
php中调用其他系统http接口的方法说明
Feb 28 #PHP
PHP URL参数获取方式的四种例子
Feb 28 #PHP
You might like
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
轻量级 JS ToolTip提示效果
2010/07/20 Javascript
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
layui表格数据重载
2019/07/27 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
js实现扫雷源代码
2020/11/27 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
Python的装饰器用法学习笔记
2016/06/24 Python
Python实现图片滑动式验证识别方法
2017/11/09 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
Python pygorithm模块用法示例【常见算法测试】
2018/08/16 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
餐厅总经理岗位职责
2013/12/31 职场文书
护士医德考评自我评价
2015/03/03 职场文书
学历证明范文
2015/06/16 职场文书
小数乘法教学反思
2016/02/22 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
Python+tkinter实现高清图片保存
2022/03/13 Python
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang