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
的东西,它确实做到了。不客气!