php函数名长度,PHP-PHP函数名长度会影响性能吗

函数名的长度会影响性能

php函数的实现原理:

php实现了一个典型的动态语言执行过程:拿到一段代码后,经过词法解析、语法解析等阶段后,

源程序会被翻译成一个个指令(opcodes),然后ZEND虚拟机顺次执行这些指令完成操作。Php本身是用c实现的,

因此最终调用的也都是c的函数,实际上,我们可以把php看做是一个c开发的软件。

通过上面描述不难看出,php中函数的执行也是被翻译成了opcodes来调用,每次函数调用实际上是执行了一条或多条指令。对于每一个函数,zend都通过以下的数据结构来描述

typedef union _zend_function {

zend_uchar type;

struct {

zend_uchar type;

char *function_name;

zend_class_entry *scope;

zend_uint fn_flags;

union _zend_function *prototype;

zend_uint num_args;

zend_uint required_num_args;

zend_arg_info *arg_info;

zend_bool pass_rest_by_reference;

unsigned char return_reference;

} common;

zend_op_array op_array;

zend_internal_function internal_function;

} zend_function;

typedef struct _zend_function_state {

HashTable *function_symbol_table;

zend_function *function;

void *reserved[ZEND_MAX_RESERVED_RESOURCES];

} zend_function_state;

其中type标明了函数的类型:用户函数、内置函数、重载函数。Common中包含函数的基本信息,包括函数名,参数信息,

函数标志(普通函数、静态方法、抽象方法)等内容。另外,对于用户函数,还有一个函数符号表,记录了内部变量等,这个将在后面详述。

Zend维护了一个全局function_table,这是一个大的hash表。函数调用的时候会首先根据函数名从表中找到对应的zend_function。

当进行函数调用时候,虚拟机会根据type的不同决定调用方法

函数调用的时候zend会先在一个全局的funtion_table中通过函数名查询相关信息,

function_table是一个哈希表。必然的,名字越长查询所需要的时间就越多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值