Railsbench : rails的测速工具

本文介绍Railsbench这一Rails专用性能测试工具的安装配置与使用流程。通过对比不同版本的Rails应用,可直观评估代码优化前后性能的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔者刚开始看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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值