是對的還是 or 有問題Base.summarysize?
julia> x = rand(Int8, 100);
julia> Base.summarysize(x)
140
julia> x = allowmissing(x);
julia> Base.summarysize(x)
240
uj5u.com熱心網友回復:
在這種情況下,它會為每個元素添加一個位元組:
Julia 現在還可以將“isbits Union”值行內存盤在一個陣列中,而不是需要一個間接框。優化是通過在實際陣列資料的位元組旁邊存盤一個額外的位元組“型別標簽陣列”來完成的,每個陣列元素一個位元組。 https://docs.julialang.org/en/v1/devdocs/isbitsunionarrays/
例如考慮以下情況Int16:
julia> x = rand(Int16, 100);
julia> Base.summarysize(x)
240
julia> x = allowmissing(x);
julia> Base.summarysize(x)
340
其中 340 = (2 1)*100 40
- 2個位元組:大小
Int16 - 1 位元組:額外位元組(型別標簽)
- 40 位元組:元資料(具有形狀、偏移量...)與陣列大小無關
請注意,使用小于一個位元組的型別標簽將導致元素不再在位元組邊界處對齊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/413807.html
標籤:
