leechael.orgHome

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 17:43:21 +0800, Cofyc said,

差异性应该使用39%这个数字更恰当吧。
OO的确很便捷、省事,Zend Framework让各种繁杂简化了不少。:-) 但实际中,却应该是要寻找到一个恰当的平衡点吧。

2007-12-16 19:23:28 +0800, Leechael said,

@Cofyc
正是我想表达的,可我就是花大力气不讨好了…… >_<

2007-12-17 21:31:24 +0800, fcicq said,

:( ...

被使用/运行次数不超过一定限度你就别考虑这么多.
打击你一下.这么大篇幅搞了件这么没用的事.

Wanna say something?