基准宝石改进

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基准宝石改进相关的知识,希望对你有一定的参考价值。

我正在努力改进自己的宝石之一。我希望能够得到一些关于我提出的各种想法的改进程度(如果有的话)的数据。

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

因此,我想加载旧版本的gem和新版本,以进行并排测试。

我不知道如何加载同一个宝石的两个版本,并根据需要选择性地应用它们。

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

有没有更好的办法?

答案

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

所以假设你有一个benchmark.rb文件具有以下内容:

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

然后用你的两个不同的Gemfiles,一个叫做Gemfile-oldgem,另一个叫做Gemfile-newgem,你可以做到以下几点:

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

运行此旧宝石基准:

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

以上是关于基准宝石改进的主要内容,如果未能解决你的问题,请参考以下文章

红宝石。线程基准

如何使用 omniauth / oauth 对每秒登录次数进行基准测试? (红宝石+rspec)

带有红宝石集合/可枚举的酷技巧和富有表现力的片段[关闭]

在 C# 中对小代码示例进行基准测试,这个实现可以改进吗?

快速排序算法详解及代码实现

快速排序学习