Web流行框架一决高下:"快"不一定"好"

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

使用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语言。因此,如果某人能在web.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步骤:

  The EC2 instance used was: ami-fbbf7892 m1.large ubuntu-images-us/ubuntu-lucid-10.04-amd64-server-20110719.manifest.xml

  As a “Large” instance, Amazon describes the resources as: 7.5 GB of memory, 4 EC2 Compute Units (2 virtual cores with 2 EC2 Compute Units each), 850 GB of local instance storage, 64-bit platform.

  Apache 2.2.14 was used. (Yes, I know there are other options, but with Apache’s market share I figured it would be a good baseline.)

  Python 2.6.5 and mod_wsgi 2.8 (embedded mode) were used for the Python based tests.

  Ruby 1.9.2p290 and Phusion Passenger 3.0.9 were used for the Ruby based tests (Ruby 1.8.x is slow).

  PHP 5.3.2 (with APC enabled) was used for the PHP based tests.

  ApacheBench was run locally with -n 10000 and -c 10 about 5-10 times each, and the “best guess average” was chosen.

  设定每个框架可运行的三个基本测试结果:

  “Hello World”测试:该测试只输出一个字符串响应。没有模板或数据库调用,因此进程水平最少。
Template测试:该测试输出Lorem Ipsum和一个template(框架模板系统)
Template/DB测试:Lorem Ipsum从SQLite DB(ORM或sqlite3驱动程序)中加载5行,通过template输出(ORM/DB驱动程序和template系统)。
你可以通过GitHub下载测试应用程序。

  你想为测试结果添加XYZ吗?

  只需在GitHub提交测试程序代码即可。当然,我会不断更新新的框架版本,你可以随时关注Google+或者GitHub。(夏梦竹/编译)

  精彩评论:

  enneff :

  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在标准库中被称为代码的核心功能。

  powertower :

  “Hello World”测试将被并发工作所取代,比如用户访问、编译达到100s的请求数,

  我记得有个测试是将MySQL与SQL Server(Microsoft's SQL Server)进行对比,还是几年的事情了。一个用户用MySQL击败了SQL Server 。所有人都为之惊叹,究竟MySQL如何优于SQL Server。

  j45 :

  有趣的对比,很喜欢这个特别的测试,我们可以在这里发表自己的看法并进行讨论。

  比如:是否真的有一个框架适合所有应用?

  我们都知道过早的优化不适合开发,重要的是有人使用过吗?








本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/wws5201985/785808,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
打赏
0
0
0
0
235
分享
相关文章
|
6月前
|
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
97 4
|
6月前
|
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
338 3
|
6月前
|
PHP 自发布以来一直在 Web 开发领域占据重要地位,PHP 8 更是带来了属性、刚性类型等新特性。
【10月更文挑战第1天】PHP 自问世以来,凭借其易用性和灵活性,在 Web 开发领域迅速崛起。从简单的网页脚本语言逐步演进为支持面向对象编程的现代语言,尤其自 PHP 5.3 引入命名空间后,代码组织和维护变得更加高效。PHP 7 的性能优化和 PHP 8 的新特性(如属性和刚性类型)进一步巩固了其地位。框架如 Laravel、Symfony、Yii2 和 CodeIgniter 等简化了开发流程,提高了效率和安全性。
97 2
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
194 62
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
367 45
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
93 2
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
386 1
|
5月前
|
探索PHP的现代演进:从Web开发到框架创新
PHP是一种流行的服务器端脚本语言,自诞生以来在Web开发领域占据重要地位。从简单的网页脚本到支持面向对象编程的现代语言,PHP经历了多次重大更新。本文探讨PHP的现代演进历程,重点介绍其在Web开发中的应用及框架创新,如Laravel、Symfony等。这些框架不仅简化了开发流程,还提高了开发效率和安全性。
56 3
从框架到现代Web开发实践
从框架到现代Web开发实践
81 1
|
5月前
|
探索PHP的现代演进:从Web开发到框架创新
PHP 自发布以来一直在 Web 开发领域占据重要地位,历经多次重大更新,从简单的脚本语言进化为支持面向对象编程的现代语言。本文探讨 PHP 的演进历程,重点介绍其在 Web 开发中的应用及框架创新。自 PHP 5.3 引入命名空间后,PHP 迈向了面向对象编程时代;PHP 7 通过优化内核大幅提升性能;PHP 8 更是带来了属性、刚性类型等新特性。
63 3

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等