Ruby 哪一个更快:计算还是赋值

Ruby 哪一个更快:计算还是赋值,ruby,time,variable-assignment,Ruby,Time,Variable Assignment,我正在优化一些代码。我需要a+b+c和x+y+z的总和,我将计算这些变量的最小值和最大值。使用minmax不是一个选项。我将分别进行这些计算 以下哪个代码块更快 min, max = 0, 0 max = [max, a + b + c, x + y + z].max min = [min, a + b + c, x + y + z].min 或者我可以这样做: min, max = 0, 0 sum, sum2 = a + b + c, x + y + z max = [max, sum

我正在优化一些代码。我需要
a+b+c
x+y+z
的总和,我将计算这些变量的最小值和最大值。使用
minmax
不是一个选项。我将分别进行这些计算

以下哪个代码块更快

min, max = 0, 0
max = [max, a + b + c, x + y + z].max
min = [min, a + b + c, x + y + z].min
或者我可以这样做:

min, max = 0, 0
sum, sum2 = a + b + c,  x + y + z

max = [max, sum, sum2].max
min = [min, sum, sum2].min
这些变量的赋值和调用是否比我需要时计算它们更快?如果我以后在同一个范围内需要这些总和,那么为可读性分配变量会更干净


我只是好奇Ruby的内部工作,而不是开发过程。

您可以使用

导致

bash-3.2$ ruby rubyspeed.rb
       user     system      total        real
1  0.160000   0.000000   0.160000 (  0.154085)
2  0.120000   0.000000   0.120000 (  0.119762)
bash-3.2$

所以第二个会更快。可能是重复计算
a+b+c
x+y+z
导致了这种情况。

您可以使用

导致

bash-3.2$ ruby rubyspeed.rb
       user     system      total        real
1  0.160000   0.000000   0.160000 (  0.154085)
2  0.120000   0.000000   0.120000 (  0.119762)
bash-3.2$

所以第二个会更快。可能是重复计算
a+b+c
x+y+z
导致了这种情况。

“使用minmax不是一个选项”-为什么不是?我主要问这个问题是为了确定ruby、赋值或计算中什么更快,以及为什么。不计算实际最小值或最大值。如果
min
max
与您的示例不相关,您可以删除调用,只创建两个数组。然而,这种级别的优化可能是无用的。我会使用更容易理解的代码。“使用minmax不是一个选项”-为什么不?我主要是问这个问题,以确定在ruby、赋值或计算中什么更快,以及为什么。不计算实际最小值或最大值。如果
min
max
与您的示例不相关,您可以删除调用,只创建两个数组。然而,这种级别的优化可能是无用的。我会使用更容易理解的代码。很有趣。。。非常感谢你。我还没有使用过很多这种“基准”技术。我得进一步调查一下。谢谢我只是觉得Ruby可能会有类似于Python的
timeit
的东西,它确实做到了。不客气!有趣的。。。非常感谢你。我还没有使用过很多这种“基准”技术。我得进一步调查一下。谢谢我只是觉得Ruby可能会有类似于Python的
timeit
的东西,它确实做到了。不客气!