php函数的定义和调用优秀

范文为教学中作为模范的文章,也常常用来指写作的模板。常常用于文秘写作的参考,也可以作为演讲材料编写前的参考。那么我们该如何写一篇较为完美的范文呢?以下是小编为大家收集的优秀范文,欢迎大家分享阅读。

php函数的定义和调用篇一

方法其执行原理和用户函数是相同的,也是翻译成opcodes顺次调用。类的实现,zend用一个数据结构zend_class_entry来实现,里面保存了类相关的一些基本信息。这个entry是在php编译的时候就已经处理完成。

在 zend_function的common中,有一个成员叫做scope,其指向的就是当前方法对应类的zend_class_entry。关于php中面向对象的实现,这里就不在做更详细的介绍,今后将专门写一篇文章来详述php中面向对象的实现原理。就函数这一块来说,method实现原理和 function完全相同,理论上其性能也差不多,后面我们将做详细的性能对比。

》》测试方法 对名字长度为1、2、4、8、16的函数进行比较,测试比较它们每秒可执行次数,确定函数名长度对性能的影 响

》》测试结果如下图

》》结果分析

从图上可以看出,函数名的长度对性能还是会有一定的影响。一个长度为1的函数和长度为16的 空函数调用 ,其性能差了1倍。分析一下源码不难找到原因,如前面叙述所说,函数调用的时候zend会先在一个全局的funtion_table中通过函数名查询相关信息,function_table是一个哈希表。必然的,名字越长查询所需要的时间就越多。 因此,在实际编写程序的时候,对多次调用的函数,名字建议不要太长。

虽然函数名长度对性能有一定影响,但具体有多大呢?这个问题应该还是需要结合实际情况来考虑,如果一个函数本身比较复杂的话,那么对整体的性能影响并不大。一个建议是对于那些会调用很多次,本身功能又比较简单的函数,可以适当取一些言简意赅的名字。

》》测试方法

在以下三种环境下进行函数调用测试,分析结果:1.程序仅包含1个函数 2.程序包含100个函数 3.程序包含1000个函数。测试这三种情况下每秒所能调用的函数次数

》》测试结果如下图

》结果分析

从测试结果可以看出,这三种情况下性能几乎相同,函数个数增加时性能下降微乎其微,可以忽略。从实现原理分析,几种实现下唯一的区别在于函数获取的部分。如前文所述,所有的函数都放在一个hash表中,在不同个数下查找效率都应该还是接近于o(1),所以性能差距不大。

》》测试方法

选取用户函数、类方法、静态方法、内置函数各一种,函数本身不做任何事情,直接返回,主要测试空函数调用的消耗。测试结果为每秒可执行次数 测试中为去除其他影响,所有函数名字长度相同

》》测试结果如下图

》》结果分析

通过测试结果可以看到,对于用户自己编写的php函数,不管是哪种类型,其效率是差不多的,均在280w/s左右。如我们预期,即使是空调,内置函数其效率也要高很多,达到780w/s,是前者是3倍。可见,内置函数调用的开销还是远低于用户函数。从前面原理分析可知主要差距在于用户函数调用时初始化符号表、接收参数等操作。

》》测试方法

内置函数和用户函数的性能对比,这里我们选取几个常用的函数,然后用php实现相同功能的函数进行一下性能对比。测试中,我们选取字符串、数学、数组中各一个典型进行对比,这几个函数分别是字符串截取(substr)、10进制转2进制(decbin)、求最小值(min)和返回数组中的所以 key(array_keys)。

》》测试结果如下图

》》结果分析

从测试结果可以看出,如我们预期,内置函数在总体性能上远高于普通用户函数。尤其对于涉及到字符串类操作的函数,差距达到了1个数量级。因此,函数使用的一个原则就是如果某功能有相应的内置函数,尽量使用它而不是自己编写php函数。对于一些涉及到大量字符串操作的功能,为提高性能,可以考虑用扩展来实现。比如常见的富文本过滤等。

》》测试方法

我们选取字符串操作和算术运算各3种函数进行比对,php用扩展实现。三种函数是简单的一次算法运算、字符串比较和多次的算法运算。除了本身的两类函数外,还会测试将函数空调开销去掉后的性能,一方面比对一下两种函数(c和php内置)本身的性能差异,另外就是侧面印证空调函数的.消耗 测试点为执行10w次操作的时间消耗

》》测试结果如下图

》》结果分析

内置函数和c函数的开销在去掉php函数空调用的影响后差距较小,随着函数功能越来越复杂,双方性能趋近于相同。这个从之前的函数实现分析中也容易得到论证,毕竟内置函数就是c实现的。函数功能越复杂,c和php的性能差距越小 相对c来说,php函数调用的开销大很多,对于简单函数来说性能还是有一定影响。因此php中函数不宜嵌套封装太深。

在php中,有这样一些函数,它们在使用上是标准的函数用法,但底层实现却和真正函数调用完全不同,这些函数不属于前文提到的三种function中的任何一类,其实质是一条单独的opcode,这里估且叫做伪函数或者指令函数。

如上所说,伪函数使用起来和标准的函数并无二致,看起来具有相同的特征。但是他们最终执行的时候是被zend反映成了一条对应的指令(opcode)来调用,因此其实现更接近于if、 for、算术运算等操作。

》》php中的伪函数

isset

empty

unset

eval

通过上面的介绍可以看出,伪函数由于被直接翻译成指令来执行,和普通函数相比少了一次函数调用所带来的开销,因此性能会更好一些。我们通过如下测试来做一个对比。 array_key_exists和isset两者都可以判断数组中某个key是否存在,看一下他们的性能

从图上可以看出,和 array_key_exists相比,isset性能要高出很多,基本是前者的4倍左右,而即使是和空函数调用相比,其性能也要高出1倍左右。由此也侧面印证再次说明了php函数调用的开销还是比较大的。

s("content_relate");

【百度工程师讲php函数的实现原理及性能分析】相关文章:

1.百度工程师讲php函数实现原理及性能分析样本参阅

2.探讨php函数的实现原理及性能

3.php性能优化技巧

4.php中session的实现原理以及大网站应用应注意的问题分析

5.常用的php函数的实现和介绍

6.关于php堆排序实现原理与应用方法

7.php性能优化小技巧

8.php中file-get-contents与curl性能比较分析的内容

猜你感兴趣
php函数的定义和调用优秀

php函数的定义和调用优秀

范文为教学中作为模范的文章,也常常用来指写作的模板。常常用于文秘写作的参考,也可以作为演讲材料编写前的参考。那么我们该如何写一篇较为完美的范文呢?以下是小编为大家收集的优秀范文,欢迎大家分享阅读。php函数的定义和调用篇一 类方法其执行原理...

其他范文 2024-02-19
最新丽江市公务员考试成绩大全

最新丽江市公务员考试成绩大全

无论是身处学校还是步入社会,大家都尝试过写作吧,借助写作也可以提高我们的语言组织能力。范文书写有哪些要求呢?我们怎样才能写好一篇范文呢?接下来小编就给大家介绍一下优秀的范文该怎么写,我们一起来看一看吧。丽江市公务员考试成绩篇一云南省2018...

其他范文 2024-02-19
监理工程师考试《三控指导》模拟真题及答案解析通用

监理工程师考试《三控指导》模拟真题及答案解析通用

无论是身处学校还是步入社会,大家都尝试过写作吧,借助写作也可以提高我们的语言组织能力。写范文的时候需要注意什么呢?有哪些格式需要注意呢?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。监理工程师考试《三控指导》模拟真题及答案解析...

其他范文 2024-02-19
最新黔之驴原文及注释大全

最新黔之驴原文及注释大全

在日常的学习、工作、生活中,肯定对各类范文都很熟悉吧。范文怎么写才能发挥它最大的作用呢?下面我给大家整理了一些优秀范文,希望能够帮助到大家,我们一起来看一看吧。黔之驴原文及注释篇一黔无驴,有好事者船载以入。至则无可用,放之山下。虎见之,庞然...

其他范文 2024-02-19
2024年师德师风教育专题论文(4篇)

2024年师德师风教育专题论文(4篇)

每个人都曾试图在平淡的学习、工作和生活中写一篇文章。写作是培养人的观察、联想、想象、思维和记忆的重要手段。范文怎么写才能发挥它最大的作用呢?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。师德师风教育专题论文篇一自己选择了这个职...

其他范文 2024-02-19
用宽容化敌为友的名人故事 用宽容化解矛盾作文600字汇总

用宽容化敌为友的名人故事 用宽容化解矛盾作文600字汇总

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。范文怎么写才能发挥它最大的作用呢?以下是我为大家搜集的优质范文,仅供参考,一起来看看吧用宽容化敌为友的名人故事 用宽容化解矛...

其他范文 2024-02-19
2024年世界勤俭日的由来通用

2024年世界勤俭日的由来通用

无论是身处学校还是步入社会,大家都尝试过写作吧,借助写作也可以提高我们的语言组织能力。范文怎么写才能发挥它最大的作用呢?以下是我为大家搜集的优质范文,仅供参考,一起来看看吧世界勤俭日的由来篇一1924年来自世界各地的29个国家参加了在意大利...

其他范文 2024-02-19
监理工程师考试模拟题及答案汇总

监理工程师考试模拟题及答案汇总

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。写范文的时候需要注意什么呢?有哪些格式需要注意呢?接下来小编就给大家介绍一下优秀的范文该怎么写,我们一起来看一看吧。监理工程...

其他范文 2024-02-19
2024年澳洲留学热门专业排行优质

2024年澳洲留学热门专业排行优质

范文为教学中作为模范的文章,也常常用来指写作的模板。常常用于文秘写作的参考,也可以作为演讲材料编写前的参考。范文书写有哪些要求呢?我们怎样才能写好一篇范文呢?以下是我为大家搜集的优质范文,仅供参考,一起来看看吧澳洲留学热门专业排行篇一 赴澳...

其他范文 2024-02-19
最新英国留学十大热门专业通用

最新英国留学十大热门专业通用

在日常学习、工作或生活中,大家总少不了接触作文或者范文吧,通过文章可以把我们那些零零散散的思想,聚集在一块。大家想知道怎么样才能写一篇比较优质的范文吗?下面是小编为大家收集的优秀范文,供大家参考借鉴,希望可以帮助到有需要的朋友。英国留学十大...

其他范文 2024-02-19
2024年绿色建筑监理细则标准化格式实用

2024年绿色建筑监理细则标准化格式实用

无论是身处学校还是步入社会,大家都尝试过写作吧,借助写作也可以提高我们的语言组织能力。范文书写有哪些要求呢?我们怎样才能写好一篇范文呢?下面我给大家整理了一些优秀范文,希望能够帮助到大家,我们一起来看一看吧。绿色建筑监理细则标准化格式篇一...

其他范文 2024-02-19
最新英属哥伦比亚大学入学条件 英属哥伦比亚大学留学费用汇总

最新英属哥伦比亚大学入学条件 英属哥伦比亚大学留学费用汇总

无论是身处学校还是步入社会,大家都尝试过写作吧,借助写作也可以提高我们的语言组织能力。范文怎么写才能发挥它最大的作用呢?以下是小编为大家收集的优秀范文,欢迎大家分享阅读。英属哥伦比亚大学入学条件 英属哥伦比亚大学留学费用篇一 学校名称:加拿...

其他范文 2024-02-19
西班牙留学的基本条件模板

西班牙留学的基本条件模板

无论是身处学校还是步入社会,大家都尝试过写作吧,借助写作也可以提高我们的语言组织能力。范文书写有哪些要求呢?我们怎样才能写好一篇范文呢?以下是小编为大家收集的优秀范文,欢迎大家分享阅读。西班牙留学的基本条件篇一 西班牙一直是很多人的理想留学...

其他范文 2024-02-19
2024年湖南商学院往年录取分数线通用

2024年湖南商学院往年录取分数线通用

每个人都曾试图在平淡的学习、工作和生活中写一篇文章。写作是培养人的观察、联想、想象、思维和记忆的重要手段。写范文的时候需要注意什么呢?有哪些格式需要注意呢?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。湖南商学院往年录取分数线...

其他范文 2024-02-19
2024年法国留学记 法国留学的优秀

2024年法国留学记 法国留学的优秀

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。那么我们该如何写一篇较为完美的范文呢?以下是我为大家搜集的优质范文,仅供参考,一起来看看吧法国留学记 法国留学的篇一 想要留...

其他范文 2024-02-19
2024年韩剧的常务大全

2024年韩剧的常务大全

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。大家想知道怎么样才能写一篇比较优质的范文吗?接下来小编就给大家介绍一下优秀的范文该怎么写,我们一起来看一看吧。韩剧的常务篇一...

其他范文 2024-02-19
2024年西班牙留学好处实用

2024年西班牙留学好处实用

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。大家想知道怎么样才能写一篇比较优质的范文吗?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。西班牙留学好处篇一...

其他范文 2024-02-19
最新江苏高考语文试卷真题优秀

最新江苏高考语文试卷真题优秀

无论是身处学校还是步入社会,大家都尝试过写作吧,借助写作也可以提高我们的语言组织能力。那么我们该如何写一篇较为完美的范文呢?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。江苏高考语文试卷真题篇一2017年普通高等学校招生全国统...

其他范文 2024-02-19
新西兰留学3种宿舍选择图片模板

新西兰留学3种宿舍选择图片模板

在日常学习、工作或生活中,大家总少不了接触作文或者范文吧,通过文章可以把我们那些零零散散的思想,聚集在一块。写范文的时候需要注意什么呢?有哪些格式需要注意呢?以下是我为大家搜集的优质范文,仅供参考,一起来看看吧新西兰留学3种宿舍选择图片篇一...

其他范文 2024-02-19
最新内蒙古锡林郭勒盟高中模拟1实用

最新内蒙古锡林郭勒盟高中模拟1实用

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。大家想知道怎么样才能写一篇比较优质的范文吗?下面是小编为大家收集的优秀范文,供大家参考借鉴,希望可以帮助到有需要的朋友。内蒙...

其他范文 2024-02-19