php 函数当中实现相同功能但是速度有差异的有哪些,为什么速度会有差异?

php中文网
发布: 2016-06-06 20:44:41
原创
1604人浏览过

php 函数当中实现相同功能但是速度有差异的有哪些,为什么速度会有差异?

回复内容:

php 函数当中实现相同功能但是速度有差异的有哪些,为什么速度会有差异?

这个问题的“踩”比较多,但我还是大胆回答下吧。。。PHP中两个函数干一样的事情的例子是有的,但是那几乎都因为它们互为别名(如sizeof vs. count,strstr vs. strchr)。在此情况下它们的性能是完全一样的。你想下,如果已经有了一个相同功能的函数,PHP干嘛要开发一个一模一样的(而且速度还得不一样)的函数呢?

但是如果把“函数”的定义放宽些,就可以发现的确有这么一类事情,PHP系统函数比另一种syntax慢。一个典型的例子是检查一个字符串的长度是否超过规定值。比方说不能超过1000。

MagicStudio
MagicStudio

图片处理必备效率神器!为你的图片提供神奇魔法

MagicStudio 102
查看详情 MagicStudio

一种方法是if (strlen($str) 另一个非典型做法是if (!isset($str[1000]))。时间复杂度也是O(1),但是测试下你就会发现,它比strlen快好几倍。

为什么两个函数速度差这么多?因为PHP会处理isset,将以上表达式转换为短短几条虚拟机指令。这有点像Java的intrinsics,虽然呼叫函数可以完成isset的任务,但是把函数的相关指令内联到代码里,速度可以更快。
而strlen就没有这种待遇了。呼叫strlen得走PHP常规呼叫系统函数的程序,动辄上百条代码。所以速度比isset慢得多。

但是注意strlen和isset实现的功能不全是一样的,只不过用在检查字符串长度这里,两者都能胜任。所以。。虽然这个例子有的牵强,但我觉得它是最符合你的问题标准的了。

立即学习PHP免费学习笔记(深入)”;

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号