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 手工注入语句大全 推荐
Oct 30 PHP
PHP 一个随机字符串生成代码
May 26 PHP
PHP通用检测函数集合
Feb 08 PHP
php实现下载限制速度示例分享
Feb 13 PHP
PHP操作MySQL事务实例
Nov 05 PHP
基于递归实现的php树形菜单代码
Nov 19 PHP
ThinkPHP连接数据库的方式汇总
Dec 05 PHP
深入理解PHP内核(一)
Nov 10 PHP
thinkphp框架下实现登录、注册、找回密码功能
Apr 06 PHP
PHP文件与目录操作示例
Dec 24 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 PHP
浅谈PHP中的Trait使用方法
Mar 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
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
关于this和self的使用说明
2010/08/01 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
python开发之str.format()用法实例分析
2016/02/22 Python
浅析python中的分片与截断序列
2016/08/09 Python
Python实现的端口扫描功能示例
2018/04/08 Python
python基础梳理(一)(推荐)
2019/04/06 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
Python如何读取、写入CSV数据
2020/07/28 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
幼儿园园长岗位职责
2013/11/26 职场文书
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
大学毕业生个人总结
2015/02/28 职场文书
感恩老师主题班会
2015/08/12 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
python接口测试返回数据为字典取值方式
2022/02/12 Python
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL