FO
Size: a a a
FO
АО

collect какая скорость?АО
push! Julia не растягивает массив каждый раз заново, у них там амортизированный push! причём в оба конца.АО
capacity удваивается.RS
МГ
collect какая скорость?МГ

АО
x = Vector{Int}()
sizehint!(x, 3)
for i in 1:3
push!(x, i)
endАО

RS
x = Vector{Int}()
sizehint!(x, 3)
for i in 1:3
push!(x, i)
endx = Vector{Int}(undef, 3). Но тогда можно и push! не писать, а сразу присваивать по индексу. Там могут быть тонкости оптимизации в этом случае. типа SIMDВФ
x = Vector{Int}(undef, 3). Но тогда можно и push! не писать, а сразу присваивать по индексу. Там могут быть тонкости оптимизации в этом случае. типа SIMDRS
Vector{Int}(undef, 3) создаст полный неинициализированный массив. Не уточнил, что это было к тому, что push! всегда хуже, чем копирование в предвыделенный массив. В том числе потому, что цикл вида:for i in 1:3
x[i] = i
end
ВФ
АО
Vector{Int}(undef, 3) создаст полный неинициализированный массив. Не уточнил, что это было к тому, что push! всегда хуже, чем копирование в предвыделенный массив. В том числе потому, что цикл вида:for i in 1:3
x[i] = i
end
push! не аллоцирует при каждом действии - на 10_000 push! всего лишь 14 аллокаций.push! вообще не в аллокациях, а видимо в каких-то глубинных внутренних проверках, так как sizehint! по количеству аллокаций и потребляемой памяти превращает push! в прямой доступ, но при этом достаточно мало влияет на производительность.ВФ
RS
АО