【发布时间】:2020-05-06 12:57:13
【问题描述】:
虽然类似问题已经发布在本网站上,但没有一个涉及 Julia 语言。我已经实现了该算法的工作版本,并且正在寻找针对特定语言的优化。
这是我用 Julia 编写的代码:
S(a::Array, n::Int64)::Array{Array} = n == 0 ? [[]] : vcat([push!.(deepcopy(S(a, n-1)), α) for α in a]...)
虽然此代码按预期工作,但速度很慢,而且消耗大量内存。
我已经尝试通过避免多次重新计算 S(a, n-1) 来稍微优化它:
S(a::Array, n::Int64)::Array{Array} = n == 0 ? [[]] : (arr::Array{Array} -> vcat([push!.(deepcopy(arr), α) for α in a]...))(S(a, n-1))
但是,内存效率低下的问题仍然存在。有什么方法可以优化此代码以提高内存效率?
【问题讨论】:
标签: arrays optimization julia