PHP 函数调用的开销

处理大量数据,每个关键词有5000条数据,一共有50万个关键词。

要对每个关键词的每条数据进行加权处理。

写了一个加权函数,作为一个类的静态方法。

遍历这50万个关键词的数据,结果非常慢。

考虑问题原因,尝试把加权函数的逻辑拆出来,放到大循环中。

写了测试代码,结果性能提升非常明显。

调用类的静态方法,程序性能是 156 次/秒,而拆出逻辑,直接运行,性能是 625 次/秒!

速度是原来的 4  倍多!

2 comments

  1. 之前把逻辑封装在函数里,就是用的静态函数,而且字典也是用的静态变量。
    我做过两项测试:
    一、字典变量改为动态变量,性能有大概20%的提升,效果不是很明显;
    二、把逻辑直接写在外层调用环境里,避免函数调用,性能提升就是原来的4倍了。
    结论:PHP的循环和小变量赋值都非常快,慢就慢在函数调用的开销上。

Leave a Reply

Your email address will not be published.

*