基准测试 gem 改进

Benchmarking gem improvements

我正在努力改进我自己的一个 gem。我希望能够获得一些关于我提出的各种想法的改进幅度(如果有的话)的数据。

通常我使用 benchmark/ips 工具进行测试。

所以我想加载我的旧版本 gem 和新版本,以便进行并行测试。

我不知道如何加载相同的两个版本 gem 并根据需要有选择地应用它们。

到目前为止,我最好的想法是克隆旧的 gem,并使用更改后的名称构建一个本地副本,例如 "old_gem_name"。然后加载它以进行比较。

有没有更好的方法?

我会使用两个不同的 Gemfile 来解决这个问题。

所以假设您有一个 benchmark.rb 文件,其中包含以下内容:

# benchmark.rb
require 'benchmark'
puts Benchmark.measure { 1000.times{ call_to_gem_method} }

然后使用您的两个不同的 Gemfile,一个名为 Gemfile-oldgem,另一个名为 Gemfile-newgem,您执行以下操作:

# Gemfile-oldgem
gem "mygem", :path => "/path/to/oldgem/mygem"

运行 这是旧的 gem 基准:

BUNDLE_GEMFILE=Gemfile-oldgem bundle exec ruby benchmark.rb

对于新的 gem 你有:

# Gemfile-newgem
gem "mygem", :path => "/path/to/newgem/mygem"

运行 这是基准测试:

BUNDLE_GEMFILE=Gemfile-newgem bundle exec ruby benchmark.rb