2012年(22)
分类: 系统运维
2012-02-24 11:30:35
使用Web开发框架,可以帮助开发者提高Web应用程序、Web服务和网站等Web开发工作的质量和效率。本文主要是对当今流行的Web框架进行比较,通过对比,你将会看到我们经常使用的在F/OSS(开放源代码软件)下Web流行框架的测试结果。
测试的结果有价值吗?
或许没有价值,当涉及到代码,也许就能凸显出它的价值所在。我尽可能的试着将每一个测试做到公平、准确。或许考虑测试结果的科学性,这种想法是愚蠢的。本文的目的并非一定要弄清楚每个框架是如何进行快速的最佳优化配置(在默认允许的情况下,内置缓存和其他性能调整通常被启用),而是更加倾向于分享经验。
此外,无非是想让Web开发发展的更好。但是,当使用适合的工具工作时,“快”并不一定意味着“更好”(极少数world项目单靠页面请求速度)。
一、Full stack(ish):Pyramid, Django, TurboGears, and Rails
注:Pyramid/TG程序使用SQLAlchemy测试类似ORM和Jinja2的模板测试系统。
二、Microframeworks:Bottle, Flask, Sinatra, and web.go
注:web.go测试运行在自身内置的服务器上,C语言对我而言较为生疏,我只熟悉GO语言。因此,如果某人能在测试中添加SQLite,我会非常感激。
三、PHP框架: CakePHP, Kohana, CodeIgniter, Symfony, and Yii
注意:APC被启用(见“test setup”环节),很显然,大多数PHP框架使用SQLite3存在很多问题,在某种情况下,黑客需要数据库方面的测试运行结果。
四、所有框架单独对比情况:
把所有的框架测试单独进行对比并不是真正的“公平”,因为,他们各自都有不同点。编译语言(比如GO)要比脚本语言快;使用ORM(比如Rails, Django, Pyramid等)测试要比纯数据库(比如Bottle, Flask, Sinatra等)要慢。
测试配置:
采用亚马逊的EC2云平台,安装Ubuntu Server步骤:
设定每个框架可运行的三个基本测试结果:
你可以通过下载测试应用程序。
你想为测试结果添加XYZ吗?
只需在GitHub提交测试程序代码即可。当然,我会不断更新新的框架版本,你可以随时关注或者。(夏梦竹/编译)
精彩评论:
:
Go的成绩很好是有一些原因的。 首先测试用的版本很老(r59),现在最新版本是r60。最近大部分Go用户比较关注Go 1。 其次,更重要的是他们示范了web.go和mustache.go库。在GO(2009年年底或2010年初)发布不久后,第三方库被编译,从那时起,GO标准的http和template得到了大力发展。 第三,这里有一个新的"database/sql"包提供单一的SQL数据库接口,还有几个驱动程序,包括sqlite,因此,在Go语言基准测试中很容易执行部分数据库。 鉴于框架的基准测试任务,我想这就是作者进行框架对比的原因。幸运的是对于Go程序员来说,Go项目中的http、templates和databases在标准库中被称为代码的核心功能。
:
我记得有个测试是将MySQL与SQL Server(Microsoft's SQL Server)进行对比,还是几年的事情了。一个用户用MySQL击败了SQL Server 。所有人都为之惊叹,究竟MySQL如何优于SQL Server。
“Hello World”测试将被并发工作所取代,比如用户访问、编译达到100s的请求数,
:
比如:是否真的有一个框架适合所有应用? 我们都知道过早的优化不适合开发,重要的是有人使用过吗?
有趣的对比,很喜欢这个特别的测试,我们可以在这里发表自己的看法并进行讨论。
原文出自:Curiasolutions