首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对Resque执行方法或Resque Job类进行基准测试?

如何对Resque执行方法或Resque Job类进行基准测试?
EN

Stack Overflow用户
提问于 2012-05-09 19:54:55
回答 1查看 773关注 0票数 2

我正在使用Resque,Resque-Status和Resque-Retry来处理bkg作业。以下是一个示例作业。它针对4-5个模型执行查询。现在我想尝试使用Sidekiq,它夸耀它的速度超过了Resque。

但在此之前,我想在我的rails应用程序中对我的下一项工作进行基准测试,以便稍后验证哪个工作表现最好。

代码语言:javascript
复制
class BkgJob < Resque::JobWithStatus
  extend Resque::Plugins::Retry
  @retry_limit = 3
  @retry_delay = 60

  @queue = :critical

  def perform
    worker_id, station_id, ids = options['worker_id'], options['station_id'], options['ids']
    human_worker = Worker.find(human_worker_id)
    station = Station.find(station_id)
    .....
    .....
  end
end

因此,问题是如何对上述作业类或执行方法进行基准测试?在基准测试方面,我真的是新手。

EN

回答 1

Stack Overflow用户

发布于 2012-05-17 16:44:07

对于Resque或Sidekiq,您在后台运行的作业的性能几乎相同。然而,Sidekiq在从队列中挑选作业时要快得多,而且与Resque相比,它的内存效率要高得多。

对后台作业进行基准测试仍然是一个好主意,但我想说的是,您应该只对执行方法本身进行基准测试,而不是对排队和执行作业的整个过程进行基准测试。您可以这样做(一个RSpec示例):

代码语言:javascript
复制
require 'benchmark'

describe 'performance' do
  it 'takes time' do
    options = {'worker_id': 123, 'station_id': 456, 'ids': [1,2,3]}
    puts Benchmark.realtime do
       100.times { BkgJob.new(options).perform }
    end
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10515569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档