OO in PHP (3)
让我们首先欢呼,良好的学术气氛万岁。 :P
先看看 fcicq 同学在 上一篇 后面的留言。既然有同学提出不同的看法,我们就去看看对比的结果。
测试环境: Windows XP sp2, WAMP5 1.7.2 (Apache 2.2.4, PHP 5.2.3), CPU Inter T2050 @ 1.6GHz。两个脚本分别运行一万次,计算运行耗时及内存使用情况。
第一次测试
Tradition:
Time Usage: 1.05502605438
Memory Usage: 66368
Linked:
Time Usage: 1.10734796524
Memory Usage: 69344
第二次测试
Tradition:
Time Usage: 1.04215908051
Memory Usage: 66368
Linked:
Time Usage: 1.0259718895
Memory Usage: 69344
重启 apache,第三次测试
Tradition:
Time Usage: 0.997123003006
Memory Usage: 66616
Linked:
Time Usage: 1.10502290726
Memory Usage: 69344
第四次
Tradition:
Time Usage: 1.04014492035
Memory Usage: 66368
Linked:
Time Usage: 1.08955287933
Memory Usage: 69344
Conclusion
一万次的运算才带来 0.1 秒的差别,我想利用 OO 打造 Validator 带来的便捷以及更少的代码量,我想大家会从中平衡两者的关系?
再唠叨两句:OO 相应而至的内存使用量(php.ini 中的 memory_limit 记得调整至合适的值),以及实际情况中是否需要牺牲时间来获得如此这般的灵活性(不需要假设你的代码会面临的情况有多么严峻,每秒钟超过 10 requests?),exception 是昂贵的。
测试中的代码可以在这里下载,有兴趣的朋友可以自己试试看: http://leechael.org/files/validator.tar.bz2
Update
经 fcicq 同学指点,改进了脚本,重新测试后的结果:
Tradition
Time Usage: 0.43701004982
Memory Usage: 67512
Linked
Time Usage: 0.607961893082
Memory Usage: 71712
这次的数字可能带来的心理影响不同: 0.17s。最起码 6 看起来比 4 大。 :D
Update 2
作为我还不足够严谨的证明,所以加上这个 Update。如下面 Cofyc 所言,对于 PHP Programmer 来说,更重要的是寻找到一个平衡点,因为 OO 只会带来开发上的便捷,而不是脚本运行速度上的提升。
3 comments
2007-12-16 19:23:28 +0800, Leechael said,
正是我想表达的,可我就是花大力气不讨好了…… >_<
2007-12-17 21:31:24 +0800, fcicq said,
被使用/运行次数不超过一定限度你就别考虑这么多.
打击你一下.这么大篇幅搞了件这么没用的事.

2007-12-16 17:43:21 +0800, Cofyc said,
OO的确很便捷、省事,Zend Framework让各种繁杂简化了不少。:-) 但实际中,却应该是要寻找到一个恰当的平衡点吧。