如codeacademy课程所示,重构有性能优势吗?

时间:2015-07-26 09:47:47

标签: ruby refactoring

我目前正在运行CodeAcademy Ruby课程并且已经完成了重构部分。

例子是

/test

其他人喜欢if / elif / else语句到case语句以及使用'implicit return'语法并将for循环交换到

if 1<2
       puts 'string'
end

puts "One is less than two!" if 1 < 2
puts 1 < 2 ? "One is less than two!" : "One is not less than two."

除了简单地让它更具可读性之外,还有什么好处吗?在Python中有pythonic的做事方式,看起来在Ruby中也是如此。但是,如果你用多种语言进行编程并且不记得每种语言的约定,那么保持简单并保持for循环似乎更有意义 - 同样对于其他语句也是如此,除非实际上有一个性能上的好处。

1 个答案:

答案 0 :(得分:2)

是的,一个班轮更像是一种Ruby-ist方式。没关系,您可以使用benchmark模块了解自己的速度。

亲眼看看加速差异:

require 'benchmark'

iterations = 100000000

Benchmark.bm do |bm|
  # joining an array of strings
  bm.report do
      (1..iterations).each do
          if 1<2
      true
    end
    end

  end

  # using string interpolation
  bm.report do
      (1..iterations).each do
        true if 1<2
    end
  end

   # using string interpolation
  bm.report do
      (1..iterations).each do
         1 < 2 ? true: false
    end
  end
end

结果:

       user     system      total        real
   5.850000   0.020000   5.870000 (  5.885982)
   5.780000   0.020000   5.800000 (  5.826295)
   5.600000   0.020000   5.620000 (  5.640354)