PHP框架的性能考量
我们在使用PHP进行Web系统开发过程中我们经常会去做框架的性能考量,而且我们也经常在各种技术论坛上看到有关框架性能的讨论。
搞一个图来聊聊,看图:
看起来好像是Ubiquity性能最好,CakePHP3.7及Laravel5.7性能非常差。
but 等等。。。
我们会在什么情况下用Ubiquity又会在什么情况下用Laravel和Cake?
同等规模的系统使用不同的架构设计,出来的效果也绝对是不同的。
如果我们要去设计一个常规的cms,那越快开发越好了。
如果我们要去设计一个高负载系统,那当然是轻量级架构更合适。
我们在设计系统架构的时候,首要考虑的是实现所需业务的技术基础,如何在成本最低的情况下最快速度研发出相应的产品功能,而不是去考量我们如何去采用最新的技术去实现很漂亮东西,企业在运作中会更多去考量实现该产品的成本及未来可拓展的空间。
作为技术人员,我们去考量框架性能无可厚非,但是这一切都和产品预算成本挂钩,我们要的不是炫技,开发行业所做的事情,是实实在在的产品功能开发。
从业这么多年,从未见过因框架性能不够导致的系统崩溃或者运行速度极慢无比,且不过多讨论各框架具体的架构细节,行业里有句黑话:我都用PHP了你还跟我提性能。此话虽是调侃,但也从侧面反映出了一个问题,PHP由于其语言特性导致每次系统初始化的时候需要把加载的资源全部初始化一遍,这样难免会造成一定的性能损耗,还是回到PHP的特性,那就是开发速度极快,可以快速产出,这也就弥补了一些缺陷。
众多框架在设计时肯定也考虑到上面的特性了,预留了一些诸如缓存机制、编译机制(没错,你没听错,编译)、静态化等减少资源重复初始化的功能,在实际使用中,因框架复杂性导致的性能损耗,非极限情况下,可以忽略不计。
开发过程中,更多的性能损耗在于数据库和IO,在PHP7中已经集成了Opcache,以及最新PHP7.4已有预加载功能,所以框架性能不是系统设计的必要条件,所有大型项目都是各种技术的融合体,实施期间应该综合考虑。
所以,大多数社区测试的PHP框架性能是不具备决定性的。
题外话:PHP是这个星球上最好的编程语言。