这只是个人测试,也是个ruby初学者的测试,如果因优化不周而造成重大误差还请各位能多多指教。
-
Rails vs Rack vs Merb:
Rails 性能比Merb差不少,但文档,插件丰富,加上Rack可以高速处理某些需求。又闻Merb要并入Rails,高速处理又有Metal,真是前景无限。
Rack 一个字快,爽。
Merb 看上去很美,只是发觉文档太少。不太试合初学者,比如我想让ActiveRecord支持Enum类型,Merb似乎需要自已操刀,而Rails可以拿来就用
速度上 静态>Rack>Merb>Rails
速度横向比较
|
静态 |
Rack |
Merb |
Rails |
速度 |
3130 |
1192 |
305 |
180 |
(单位:reqs/sec)
-
Cache:
page缓存很方便,而且直接生成html,很容易实现全站静化,只是如果每个文件id都放于同一目录下,很难想像几万文件挤在一个目录下。cache还有待学习。似乎fragment能解决这个问题。
对于很简单的helloworld,action缓存不快反慢。reqs由180下降到150。
-
服务器:
Fastcgi比mongrel快不少。mongrel更易使用。我现在是 development用mongrel,production用fastcgi
Nginx和lighttpd差不多快,
apache2的mod_rails性能记得也不错,具体数值忘了,apache2太大型,内存占得多,配置灵活性没Nginx好,且在性能上和Nginx与Lighttpd有不小差距,所以不再予考虑。
-
我个人最终取向:
Nginx+Fastcgi+Rails+Rack 作为我的Rails平台。
另外我的blog是
http://www.jiangmiao.org/blog
最近在学ruby中,ruby现在给我最大的感触就是灵活,方便。
2009-1-21补充:
- Fastcgi
经过实践,发现在fastcgi上lighttpd略胜一筹,最佳的性能稳定Rails平台还是为公认的 Lighttpd+Fastcgi. 但不可否认nginx为非常优秀的服务器,特别是他的配置方式,我尤为中意。
- Cache
提到的Fragment Cache与Page Cache为2个不同等级的cache,
Page提供全文cache,在controller中以caches_page :actionName形式。
Fragment为区域cache,在views中以 <% cache do %> xxx <%end%> 形式。
关于Fragment Cache存储方式如文档中提到的
#内存cache,也是默认的cache
ActionController::Base.cache_store = :memory_store
#以文件形式保存
ActionController::Base.cache_store = :file_store, "/path/to/cache/directory"
ActionController::Base.cache_store = :drb_store, "druby://localhost:9192"
ActionController::Base.cache_store = :mem_cache_store, "localhost"
ActionController::Base.cache_store = MyOwnStore.new("parameter") #重写自已的Store
在environment可以添加语句 config.cache_store = xxx 进行设置
网上很多文章因使用的rails版本已过时,仍以 fragment_cache_store= 作为教程存在,使人走了不少弯路。所以在rails升级或学习的过程中,阅读changelog是很有必要的。
关于自定义Store网上教程似乎很少,但因其并不复杂,又因rails源码公开,大家可参考MemoryStore的源文件 memorystore_cache.rb
如 class MyOwnStore < ActiveSupport::Cache::Store 并重写write,read等方法,则可以轻松制定Fragment的缓存方式。
关于更多cache可以参考http://www.railsenvy.com/2007/2/28/rails-caching-tutorial
但注意该rails的版本也以过时,因为其log显示还是以Completed in 0.18700 (5 reqs/sec) | Rendering: 0.10900 (58%) | DB: 0.00000 (0%)形式。
分享到:
- 2008-12-31 07:40
- 浏览 1855
- 评论(4)
- 论坛回复 / 浏览 (4 / 3493)
- 查看更多
相关推荐
Ruby性能测试是软件开发过程中一个至关重要的环节,尤其是在使用Ruby这种动态编程语言时。它确保了代码在实际生产环境中的高效运行,避免了资源浪费和潜在的性能瓶颈。本资料包详细介绍了Ruby性能测试的各个方面,...
标题中的“如何用Ruby来实现页面性能测试”指的是利用Ruby编程语言进行网页性能评估和监控的一种方法。在描述中提到,作者选择了Ruby而非QTP(QuickTest Professional)是因为Ruby具有优于QTP的独特优点,尤其在资源...
### Ruby开发的基本流程 #### 一、Ruby开发环境搭建 Ruby是一种动态的、面向对象的解释型编程语言,因其简洁易读的语法和强大的库支持而在Web开发领域中备受青睐。开发Ruby应用的第一步是搭建合适的开发环境。推荐...
"ruby测试代码1"可能指的是一个具体的测试用例或者测试框架的实例,用于验证Ruby程序的功能和性能。Ruby提供了多种测试工具,如MiniTest、RSpec和Cucumber等,它们各自有其特点和适用场景。 MiniTest是Ruby标准库的...
Ruby 开发环境的配置 Ruby 是一种流行的编程语言, Rails 是基于 Ruby 的一个 Web 应用框架。本文档将指导您如何配置 Ruby 开发环境,包括安装 Ruby 和 Rails、配置开发环境、安装数据库等步骤。 一、安装 Ruby ...
在阅读提供的rdoc文件时,你可以找到关于Rails框架中各个组件的详细文档,包括类和函数方法的说明,这对于深入理解和使用Ruby on Rails进行开发非常有帮助。通过学习这些文档,开发者能更好地掌握Rails的精髓,提高...
本开发文档将深入探讨Ruby的核心概念、语法特性、类与对象、方法、模块和混合、数组、哈希、控制结构、异常处理、文件与目录操作、Gem包管理、测试框架等内容,帮助开发者全面理解和掌握Ruby编程。 1. **核心概念**...
在“ruby on rails社区网站开发源码”中,我们可以学习到如何利用Rails构建一个互动性强、功能丰富的社区网站。以下是一些关键知识点: 1. **安装与环境设置**:首先,你需要安装Ruby和Rails。这通常涉及设置Ruby...
Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可...
标题“ruby测试代码6”和描述“ruby测试代码6”暗示了这是一个关于使用Ruby语言进行的测试代码项目,可能涉及到不同的模块或者数据结构。标签“ruby测试代码6”进一步确认了这一主题。从压缩包子文件的文件名称列表...
Ruby-Skylight 是一款专为Rails应用设计的性能分析工具,它可以帮助开发者深入理解应用程序的运行状况,尤其是在处理请求时的性能表现。...对于任何希望提升Rails应用性能的开发者而言,这都是一个不可或缺的工具。
Ruby是一种强大的动态编程语言,广泛应用于Web开发、脚本编写以及软件测试等领域。"Ruby测试代码7"可能指的是一个特定的测试用例或测试框架在Ruby中的应用。在这个场景下,我们将深入探讨Ruby中的测试实践,包括测试...
总结来说,通过`--disable-pthread`编译Ruby可以减少线程管理和信号处理相关的系统调用,特别是`sigprocmask`,从而提高约30%的性能。然而,这并不意味着在所有情况下都应该禁用线程支持。线程在多任务和并发处理中...
在这个开发环境包中,我们拥有Ruby 1.8.7版本和Rails 2.2.3版本,这两个组件构成了一个经典的开发组合。 Ruby 1.8.7是Ruby编程语言的一个早期稳定版本,发布于2010年,提供了许多改进和新特性。在Ruby 1.8.x系列中...
Ruby-Falcon是一个专门为Ruby语言设计的高性能Web服务器,它的出现为开发者提供了在处理高并发、低延迟场景下的优秀选择。Falcon的主要特点是其对HTTP/2协议和HTTPS的支持,这使得它在现代Web服务中具备了高效且安全...
在Windows环境下,搭建Ruby开发环境是一项基础而重要的工作,它涉及到多个步骤,包括安装必要的软件、配置环境变量以及集成开发工具的设置。本教程将详细讲解如何使用RDT(Ruby Development Tools)与Eclipse来创建...
这使得在Ruby中进行面向对象编程非常自然。 2. 动态类型:Ruby具有动态类型系统,变量的类型在运行时自动确定,无需提前声明。 3. 自动内存管理:Ruby使用垃圾回收机制来自动管理内存,开发者无需手动释放内存。 4. ...