gpt4 book ai didi

ruby - 数组优化 : what is more expensive?

转载 作者:数据小太阳 更新时间:2023-10-29 08:15:37 25 4
gpt4 key购买 nike

下面哪段代码的开销更大?

x = my_array.inject {|sum,i| int+=i }

x = eval(my_array.join('+'))

最佳答案

试试看:

#!/usr/local/bin/ruby -w
require 'benchmark'
iterations = 1000000

Benchmark.bmbm do |bench|
numbers = (1..100).to_a

bench.report('inject') do
x = numbers.inject { |sum, num| sum + num }
end
bench.report('eval') do
x = eval(numbers.join('+'))
end
end

给出:

telemachus ~ $ ruby bench.rb 
Rehearsal ------------------------------------------
inject 0.000000 0.000000 0.000000 ( 0.000029)
eval 0.000000 0.000000 0.000000 ( 0.000261)
--------------------------------- total: 0.000000sec

user system total real
inject 0.000000 0.000000 0.000000 ( 0.000047)
eval 0.000000 0.000000 0.000000 ( 0.000186)

但实际上,我认为您是在进行微观优化。我会使用 inject 除非它非常低效,因为这是构建该方法的目的。

我还认为您的 inject 代码有两个问题。首先,您指的不是int,而是sum。其次,您可以简单地添加项目,而不是使用 +=inject 的第一个参数会自动累积值。

关于ruby - 数组优化 : what is more expensive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1550838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com