gpt4 book ai didi

julia - Julia 中的线性代数运算顺序

转载 作者:行者123 更新时间:2023-12-01 00:25:53 27 4
gpt4 key购买 nike

如果我有命令 y = A*B*x哪里A & B是大矩阵和 x & y是向量,Julia 会预成型 y = ((A*B)*x)y = (A*(B*x)) ?

第二个选项应该是最好的,因为它只需要分配一个额外的向量而不是一个大矩阵。

最佳答案

验证这种事情的最好方法是通过 @code_lowered 转储降低的代码宏:

julia> @code_lowered A * B * x
CodeInfo(:(begin
nothing
return (Core._apply)(Base.afoldl, (Core.tuple)(Base.*, (a * b) * c), xs)
end))

像许多其他语言一样,Julia 确实 y = (A*B)*x而不是 y = A*(B*x) ,因此您可以明确使用括号来减少分配。
julia> using BenchmarkTools

julia> @btime $A * ($B * $x);
6.800 μs (2 allocations: 1.75 KiB)

julia> @btime $A * $B * $x;
45.453 μs (3 allocations: 79.08 KiB)

关于julia - Julia 中的线性代数运算顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44961876/

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