笔者刚开始看Railsbench,试了一下之后,觉得是一个不错的工具,共享自己的感受,如有不妥之处,敬请指正。
Railsbench是一款专门用于rails的测试工具。笔者在进行代码优化的时候,发现了它,通过它,可以很清楚的了解到更改代码之后,对相应页面都有些什么样的变化,到底是快了还是慢了。
1. 安装Railsbench
# gem install railsbench
# gem install gruff
# gem install rmagick
2. 配置环境
假定我们的rails应用程序根路径是/var/Rails/myapp
1) 拷贝myapp: cp -r /var/Rails/myapp /tmp/myapp_old
2) 配置myapp
# cd /var/rails/myapp
# export RAILS_ROOT=/var/Rails/myapp
# railsbench install
这将会创建以下几个文件:
$RAILS_ROOT/config/benchmarks.rb
$RAILS_ROOT/config/benchmarks.yml
$RAILS_ROOT/config/environments/benchmarking.rb
然后更改配置文件 benchmarks.yml
default:
sku
sku:
edit,expert_search
edit:
uri: /sku/edit/a07010200ux0001
new_session: yes
session_data:
user_id: <%= User.find_by_username('admin').id %>
expert_search:
uri: /sku/expert_search
new_session: yes
session_data:
user_id: <%= User.find_by_username('admin').id %>
好了,现在我们就可以开始生成 性能测试文件了
# railsbench perf_run 100 "-bm=default -log" myapp_new
生成的测试文件一般是:
/root/02-26.default.myapp_new.txt
( 其实是在$HOME下,如果你是root,那么就在/root下,在这里我们假定都是root登录,
02-26是今天的日期
命令行中的100表示重复次数,这个越大那么测试的结果就相对越稳定。当然需要的时间也越多。
)
3) 另外开启一个终端,配置myapp_old
# cd /tmp/myapp_old
# export RAILS_ROOT=/tmp/myapp_old
# railsbench install
...
#railsbench perf_run 100 "-bm=default -log" myapp_old
生成的文件:
/root/02-26.default.myapp_old.txt
好了准备工作完成了,下面就开始正常动作了。
3. 开始编码并测试
1) 我们在myapp下更改我们的代码,例如笔者使用quick_url_for替换系统默认的url_for,由于quick_url_for没有route所有路径,那么应该会比以前的快。而且,笔者更改的edit,没有更改expert_search.
2)更改完毕之后,运行测试脚本,如果没有问题,就可以开始railsbench的测试了。
3)在myapp的终端中,
# cd /var/Rails/myapp
# railsbench perf_run 100 "-bm=default -log" myapp_new
在myapp_old的终端中,
# cd /tmp/myapp_old
# railsbench perf_run 100 "-bm=default -log" myapp_old
然后比较
# railsbench perf_comp 02-26.default.myapp_old.txt 02-26.default.myapp_new.txt | railsbench perf_html > /root/Desktop/tt.html
打开你的浏览器,输入: file:///root/Desktop/tt.html 就可以看到结果了。
结果中的最后一项c1/c2
你会发现edit那一行的 与 expert_search那一行 也许会不一样
expert_search那一行应该接近1(由于系统有是快有时慢不一定等于1),而edit那一行就一般会有变化,或者小或者大,这就要根据你更改后代码的执行效率而定了。
在完成以上步骤之后,就可以一边更改你的代码一边查看你更改之后,速度是否有变化了。
但是,笔者在使用的时候,发现,每次生成结果比较麻烦,于是乎,就自己写了一个shell脚本批处理,生成相应的结果html
# shell script:
app1=/tmp/myapp_old
app2=/var/Rails/myapp
times=100
date=`date +%m-%d`
cd $app1
railsbench perf_run $times "-bm=default -log" app1
cd $app2
railsbench perf_run $times "-bm=default -log" app2
railsbench perf_comp /root/$date.default.app1.txt /root/$date.default.app2.txt | railsbench perf_html > /root/Desktop/tt.html
参考:
http://english.zhuaxia.com/item/375014371
环境:Rails1.2.6, ruby1.8.6, centos 5, mysql5
分享到:
相关推荐
Ruby on Rails:Rails框架入门.docx
Ruby on Rails:Rails与JavaScript集成.docx
Ruby on Rails:Rails中的表单处理.docx
Ruby on Rails:Rails中的测试驱动开发.docx
Ruby on Rails:Rails中的控制器编写.docx
Ruby on Rails:Rails性能优化与缓存策略.docx
java源码:Rails3消息队列系统 Sidekiq.zip
SwaggerYard :: Rails SwaggerYard :: Rails gem是一个Rails引擎,旨在使用SwaggerYard解析您的Yardocs API控制器。 它将创建一个Swagger-UI投诉JSON,以通过安装SwaggerYard :: Rails :: Engine的位置提供。安装将...
Ruby / Rails调试工具包rails_dt gem为您提供了DT.p()方法来打印调试消息。用法在您的Gemfile ,添加: gem "rails_dt"#gem "rails_dt", "git: https://github.com/dadooda/rails_dt.git" # Edge version. 现在,...
rails_best_practices是用于检查Rails代码质量的代码度量工具。 它支持以下ORM / ODM: 活动记录 蒙古型 mongomapper 以及以下模板引擎: erb 哈姆 减肥 拉布尔 rails_best_practices支持Ruby 1.9.3或更高版本...
在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...
基金会::铁路 Foundation :: Rails是一颗宝石,可以在即将到来的Rails项目中非常轻松地使用Foundation。安装将这些行添加到应用程序的Gemfile中: gem ' foundation-rails 'gem ' autoprefixer-rails ' 然后执行: ...
Rails多站点这个gem为Rails应用程序提供了多数据库支持。 使用其中间件,您可以对应用程序进行分区,以便每个主机名都有自己的数据库。 它提供了一系列用于处理多个数据库的帮助程序,以及一些用于处理这些数据库的...
Rails指南中文版是针对Ruby on Rails框架的一份详尽教程,旨在帮助开发者深入理解并熟练掌握这个强大的Web应用开发工具。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-...
Ruby on Rails(简称Rails)是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程并提高效率。在这个“ruby on rails在线考试系统”中,我们可以探讨以下几...
附上Jamis的rdoc模板文件,tar解压即可。 博文链接:https://lgn21st.iteye.com/blog/199681
10. **Rails Console**:交互式的命令行工具,用于运行Rails应用的上下文中的Ruby代码,是调试和实验代码的好帮手。 11. **Action Cable**:Rails 5引入的特性,实现了Websocket通信,支持实时的双向通信功能,用于...