opu*_*111 2 memory-management reference julia
我有一个很大的结构数组,我想创建一个对较大数组中结构的引用的小数组。我如何在 Julia 中表达这一点?
例如,这是我的许多 Foo 结构的大数组
struct Foo
bah
end
many_foos = [Foo(i) for i in 1:100000]
Run Code Online (Sandbox Code Playgroud)
这是我想要引用大数组中的 Foos 的小数组
select_foos = [foo for foo in many_foos if some_condition(foo)]
Run Code Online (Sandbox Code Playgroud)
我想在创建 many_foos 时分配一次内存,并且只为 select_foos 创建一个指针数组。
Julia 如何表达创建对某物的引用,而不是复制值?如何有效地创建大量结构?
非常感谢
你的代码已经做了你想要的。如果数组的元素类型不是因为它具有非类型化字段isbitstype,Foo则数组仅在行内存储它们的对象。
不过,总的来说,在 Julia 中没有必要考虑这个问题。在将 Julia 数组传递到例如 C 时,您只需要考虑内存布局,因为在那里您需要处理数组的原始内存。