通常我使用benchmark/ips工具进行测试。
我不知道如何加载同一个gem的两个版本,并根据需要有选择地应用它们。
到目前为止,我的最佳想法是克隆旧gem,并用一个修改过的名称构建一个本地副本,比如“old\u gem\u name”。然后加载以进行比较。
有更好的办法吗?
我会用两个不同的文件来处理这个问题。
所以假设你有 benchmark.rb
benchmark.rb
# benchmark.rb require 'benchmark' puts Benchmark.measure { 1000.times{ call_to_gem_method} }
然后用你的两个不同的文件,一个叫 Gemfile-oldgem 另一个打电话来 Gemfile-newgem
Gemfile-oldgem
Gemfile-newgem
# Gemfile-oldgem gem "mygem", :path => "/path/to/oldgem/mygem"
为旧的gem基准运行以下命令:
BUNDLE_GEMFILE=Gemfile-oldgem bundle exec ruby benchmark.rb
对于新的宝石你有:
# Gemfile-newgem gem "mygem", :path => "/path/to/newgem/mygem"
BUNDLE_GEMFILE=Gemfile-newgem bundle exec ruby benchmark.rb