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连mysql和oracle数据库性能比较
Oct 09 PHP
理解php原理的opcodes(操作码)
Oct 26 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
解析PHP计算页面执行时间的实现代码
Jun 18 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 PHP
PHP加密解密字符串汇总
Apr 26 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
PHP中Closure类的使用方法及详解
Oct 09 PHP
PHP笛卡尔积实现算法示例
Jul 30 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 PHP
tp5框架使用cookie加密算法实现登录功能示例
Feb 10 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判断网络文件是否存在的方法
2015/03/12 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
2015/09/12 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
js判断节假日实例代码
2017/12/27 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
[02:50]2014DOTA2 TI预选赛预选赛 大神专访第一弹!
2014/05/21 DOTA
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
Python logging模块异步线程写日志实现过程解析
2020/06/30 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
铭立家具面试题
2012/12/06 面试题
会计专业自荐信
2013/12/02 职场文书
自我评价范文
2013/12/22 职场文书
教你打造完美的创业计划书
2014/01/06 职场文书
高二美术教学反思
2014/01/14 职场文书
环保项目建议书
2014/08/26 职场文书
离职感谢信怎么写
2015/01/22 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript