我对使用和不使用struct的两个函数进行了速度比较,如下所示,它的性能差别很大:0.07899 vs 0.0011[秒]。奇怪的是idxset的内容
test1()
和
test2()
你能解释一下如何用struct改进我的代码吗?为什么会这样?
struct Data
bool
end
function test1()
N = 10^5
data = Data(trues(N))
idxset = findall(data.bool)
s=0.0
@time for i in idxset
s += i^2
end
return s
end
function test2()
N = 10^5
bool = trues(N)
idxset = findall(bool)
s=0.0
@time for i in idxset
s += i^2
end
return s
end
test1()
test2()