处理大量数据,每个关键词有5000条数据,一共有50万个关键词。
要对每个关键词的每条数据进行加权处理。
写了一个加权函数,作为一个类的静态方法。
遍历这50万个关键词的数据,结果非常慢。
考虑问题原因,尝试把加权函数的逻辑拆出来,放到大循环中。
写了测试代码,结果性能提升非常明显。
调用类的静态方法,程序性能是 156 次/秒,而拆出逻辑,直接运行,性能是 625 次/秒!
速度是原来的 4 倍多!
勤奋 – 创新 – 矢志不渝 – 锲而不舍
处理大量数据,每个关键词有5000条数据,一共有50万个关键词。
要对每个关键词的每条数据进行加权处理。
写了一个加权函数,作为一个类的静态方法。
遍历这50万个关键词的数据,结果非常慢。
考虑问题原因,尝试把加权函数的逻辑拆出来,放到大循环中。
写了测试代码,结果性能提升非常明显。
调用类的静态方法,程序性能是 156 次/秒,而拆出逻辑,直接运行,性能是 625 次/秒!
速度是原来的 4 倍多!
使用静态函数,或者把字典定义为静态变量,应该是差不多的效果。
之前把逻辑封装在函数里,就是用的静态函数,而且字典也是用的静态变量。
我做过两项测试:
一、字典变量改为动态变量,性能有大概20%的提升,效果不是很明显;
二、把逻辑直接写在外层调用环境里,避免函数调用,性能提升就是原来的4倍了。
结论:PHP的循环和小变量赋值都非常快,慢就慢在函数调用的开销上。