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中冒号、endif、endwhile、endfor使用介绍
Apr 28 PHP
PHP容易忘记的知识点分享
Apr 30 PHP
php数组添加元素方法小结
Dec 20 PHP
joomla组件开发入门教程
May 04 PHP
php数据访问之查询关键字
May 09 PHP
将PHP的session数据存储到数据库中的代码实例
Jun 24 PHP
PHP内置加密函数详解
Nov 20 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
Nov 25 PHP
PHP实现的简单AES加密解密算法实例
May 29 PHP
PHP截取发动短信内容的方法
Jul 04 PHP
Laravel框架定时任务2种实现方式示例
Dec 08 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 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
解析ajax事件的调用顺序
2013/06/17 PHP
解析php取整的几种方式
2013/06/25 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
js重写方法的简单实现
2016/07/10 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
jQuery实现推拉门效果
2020/10/19 jQuery
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
Python中的高级数据结构详解
2015/03/27 Python
python在不同层级目录import模块的方法
2016/01/31 Python
python实现二叉树的遍历
2017/12/11 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
Python执行时间的几种计算方法
2020/07/31 Python
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
本科生职业生涯规划书范文
2014/01/21 职场文书
庆中秋节主题活动方案
2014/02/03 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
化学工程专业求职信
2014/08/10 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
Python中requests做接口测试的方法
2021/05/30 Python