使用PHP框架会影响性能吗?

5
如果我使用Code Igniter或Cake Framework,会影响应用程序的性能吗?

3
Codeigniter 被认为是最快的 PHP 框架之一,因为它默认不包含任何内容,每次需要功能时只需在项目中引用它即可。我对其他框架不太了解,但使用框架的好处不仅限于性能问题... - rabidmachine9
1
+1 撤销踩票。这是一个合理且有用的问题,踩票不合理。如果基于此问题是重复的,那么在踩票时请提供原始问题的链接。 - Majid Fouladpour
@Majid:在此问题底部有重复内容:http://stackoverflow.com/questions/1670003/framework-comparison-and-overhead - George Stocker
4个回答

5

如果您将性能定义为执行速度,则答案是:

  • 是的,它会降低性能-始终如此。

框架提供了 PHP 原生函数的抽象。每当您在某个东西上放置一个抽象时,就会产生加载抽象和调用它的函数的惩罚。框架通常是一般性的抽象,适用于许多 UseCases。通过较少的抽象可能可以解决应用程序中的特定 UseCase。

但是,使用框架可以获得更好的模块化、更快的开发时间(如果您知道该框架)、更好的可维护性和(希望如此)测试过的代码,这通常是值得的。这并不是说始终要使用框架,而是要考虑权衡,然后再决定。

至于基准测试,可以看看:


对于初学者来说,学习和切换不同的框架需要花费多少时间呢? - Naveed
@NAVEED 这就是我写的“如果你了解框架”的原因。而且,我仍然认为PHP的新手不应该使用框架 - Gordon
1
“Always”太绝对了。从php文档中随机选一个例子:md5_file()是对fopen(); md5(); fclose();的抽象,但使用这种抽象可能比不使用更具有性能优势。有很多“取决于”问题。记住我们必须比较YourCode和YourCode+Framework。例如,如果框架使缓存变得容易,而您自己没有时间编写缓存,那么使用框架可能会导致应用程序性能更好。 - Douglas
1
@Douglas md5_file是PHP的原生函数。当我在这里谈论抽象化时,我指的是用户实现,因为这就是框架的作用。此外,我并不是说编写自己的抽象化对每个开发人员来说总是更快。这确实取决于个人技能。我的观点是,框架通常提供比解决具体问题所需的更多抽象。例如,您的框架缓存模块可能提供多个后端适配器,而您只使用memcached。直接使用memcached将比通过额外的抽象层进行使用更快。 - Gordon

2

它甚至拥有jQuery Ajax支持,这是一个极好的特性。Yii框架是否有活跃的社群呢?! - getaway
是的,有250多个扩展:http://www.yiiframework.com/extensions/ 和一个很棒的论坛:http://www.yiiframework.com/forum/ - shamittomar
4
在实际情况下,基准测试是几乎无用的。只有在你试图解决与你所进行基准测试的真实世界问题相同的问题时,它们才有用。因此,它们大多只是营销宣传(因为最终的真实世界应用程序性能将更加依赖于您的编程技能,而不是您选择的框架的“速度”)。 - ircmaxell
1
我没有点踩,但即使基准测试具有暗示意义以外的内容,那篇文章也已经两年了,只能对当时的框架性能提供一个指标。 - Gordon
1
他是在询问不同框架的性能,还是在问在项目中使用框架对性能的影响? - Naveed

0

可能的缺点:(有时取决于您的项目)

  • 不同的框架有不同的编码约定。您必须学习这些。
  • 有时您找不到任何对您有用的库。
  • 不适用于小型项目。简单项目的自定义编码比设置框架更快。
  • 额外的开销可能会影响性能。
  • 不一定更安全(您需要注意更新等)。
  • 要定制化困难得多。
  • 需要时间来学习和掌握。

如果您想比较不同的框架,请参考以下链接:


如果我有一个大项目需要定制编码,那使用PHP框架会比较慢! - getaway
1
@Solomon Saleh:是的。对于小型项目来说,PHP框架并不是非常有用。 - Naveed
1
这篇文章和评论没有任何意义。 - Matti Virkkunen
1
你是认真的吗?!他在谈论一个应用程序而不是简单的脚本...看起来你只是想推销自己的帖子。很好。 - Kieran Allen
@Kieran Allen:他并没有询问不同PHP框架的性能,而是询问在使用框架时可能产生的影响。这可能是执行速度,也可能是学习新框架所花费的时间等等。但人们在这里比较不同的框架,这是离题的。请看已接受的答案。 - Naveed
显示剩余4条评论


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接