我和我的同事正在选择一个Web框架来开发一个高流量的网站。我们对node.js + express
和php + symfony2
非常满意。两者都是很棒的框架,但我们对Symfony2有点担心,因为它似乎比大多数网络框架都要好。
以下是证明它的基准: http://www.techempower.com/benchmarks/
出于这个原因,我们可能会使用node.js + express,但我仍然想知道为什么Symfony2在基准测试中表现如此糟糕。
答案 0 :(得分:127)
最后,所有这些都归结为纠正缓存处理 ...
symfony或PHP通常比其他语言或框架慢,因此为您提供了快速创建丰富,安全且可测试的Web应用程序的工具。
如果您使用反向代理,例如 Varnish 和 ESI (边缘包括)并最终提供模板的部分,您确实需要通过symfony进行更新。你会有一个非常快速的经历。
此外,如果您使用 APC 等操作码缓存和优化数据库,那么人类用户实际上并未注意到现实世界中几毫秒的差异应用
根据要求,我会更深入地思考一下,并给你一些更多想法。
云服务(s3,ec2,gae,...)几乎没有任何成本与负载均衡器配对,易于配置(厨师,木偶......)以及所有这些时髦的东西,它变得简单易用即使是小公司也可以负担得起运行和管理大数据和/或高流量应用程序。
更多存储意味着更多的缓存空间 - 更多的计算能力意味着更快的缓存热化。
如果人们谈论php或框架性能,你会经常听到的事情:那么为什么这些网站没有彻底崩溃?因为他们的缓存程序很聪明。
您是否知道如果您撰写状态更新,Facebook会做什么?
它不会将其保存到包含所有状态更新的数据库表中,如果朋友访问了他的流,则在提供服务之前,所有朋友的所有状态都将从数据库中获取。
facebook将您的状态写入您的所有朋友新闻流并开始加热他们的缓存。现在所有的流都准备好服务了,每当你的一个朋友访问他的流时,他将被提供缓存版本;即时几乎不涉及代码执行。当缓存预热完成时,流将仅显示新创建的状态。我们在这里谈论ms ...
这告诉我们什么?在现代高频率的应用程序中,几乎所有内容都是从缓存提供的,用户不会注意到页面的实际计算是花费1毫秒还是5秒。
在现实世界中#34;最终用户将注意到框架之间的req / sec没有差异。即使使用微缓存等简单的东西,你也可以让你的vps托管博客一旦你在黑客新闻的登陆页面上制作它就不会立即停止。
最后,更重要的是......我的框架是否提供了工具,文档以及教程和示例......以使整个过程快速完成并快速运行简单。 symfony对我有用!
如果您遇到困难......有多少人愿意并且能够回答您与绩效相关的问题? 使用此框架已经创建或将在不久的将来创建了多少个真实应用程序?
通过选择框架来选择社区!
...好吧那是重要的部分......现在回到这些基准:)
在基准测试中的所有这些闪亮的颜色和花哨的图表中,您很容易错过这样一个事实,即每个框架都只测试了一个设置(网络服务器,数据库......),而您可以使用各种配置他们每个人。
示例:您也可以使用symfony + doctrineODM + MongoDB,而不是使用symfony2 + doctrineORM + mysql。
MySQL ... MongoDB ...关系型数据库...... NoSQL数据库...... ORM ...微型ORM ...原始SQL ......在这些配置中都混淆了------>苹果和橘子。
几乎所有基准测试的常见问题 - 甚至只是比较php框架 - 在网络上发现,以及那些" TechEmpower Web框架基准测试"是不平等优化。
这些基准测试不会利用可能的(以及经验丰富的开发人员众所周知的)优化这些框架......至少对于symfony2及其测试来说这是事实。
关于最新测试中使用的symfony2设置的一些示例:
列表继续......但我猜你明白这个领先的地方。 90 open issues现在......一个无尽的故事。
服务器和存储等资源很便宜。真的很便宜......与开发时间相比。
我是一名自由职业者,收取相当高的费用。你可以获得2-3天的时间......或者是大量的计算能力和存储空间!
在选择框架时,您还选择了一个快速开发的工具包 - 这是一种武器,可以帮助您对抗从未完全满意,功能悄悄的客户......谁会为您的愿望付出代价。
作为代理商(或自由职业者),您希望在短时间内构建功能丰富的应用程序。你会遇到一些问题,你可能会遇到一些问题...可能与性能相关的问题。但是你也面临着开发成本和时间。
什么会更贵?额外的服务器或其他开发人员?
答案 1 :(得分:1)
此博客回答了您问题的第二部分: http://symfony.com/blog/is-symfony-too-slow-for-real-world-usage
解雇symfony,因为" hello,world"测试不是 与FooBar框架一样好是一个错误。原始速度不是 专业人士的关键因素。成本是关键因素。和成本 使用symfony开发,托管和维护应用程序 低于其他解决方案。
在选择框架时,应考虑开发的总成本。这意味着要考虑框架的代码质量(单元测试,文档等),性能(和托管成本),开箱即用的功能的数量和质量,社区的大小,组织的使用情况像你的,可扩展性等。
作为一名Symfony开发人员,我从技术角度热情地讨厌WordPress。但我仍然建议(甚至使用!)它用于一个简单的网站。这不仅仅是因为它的受欢迎程度,还因为它的社区规模:聘请WordPress设计师/开发人员非常容易。在这种情况下,查看WordPress和Symfony之间的性能比较是没有任何意义的。