thinkPHP中有个require_cache函数包装了require,显示地实现了@require_once的功能,注释中标榜为“优化的require_once”,然而实际情况如何,我做了个很简单的功能测试,for循环1000000次分别测试require_cache和require_once的性能
require_once: 2.009112, 2.099082, 2.075355
require_cache:23.285378, 23.309440, 23.334591
require_test:2.745165, 2.731406, 2.859381
require_test2:23.386466, 23.116133, 23.034672
结果很明显了,是由于每次的realpath调用严重增加了IO开销导致的性能急剧下降,而其他因素如函数调用、静态变量使用等对性能影响相对于IO开销都可以忽略不计,毕竟是在内存发生的,顺带一提,测试环境是win7+APMServ+ThinkPHP2.0
当然,对于实际应用来说,由于不会有如此大数量的require发生,所以十倍的性能差距基本可以无视,但ThinkPHP的这个函数仍然摆脱不了画蛇添足的嫌疑
