Size: a a a

Язык программирования Julia / Julia programming language

2021 February 28

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
julia> @btime sort(A[2:2:10000]);
 200.285 μs (4 allocations: 78.28 KiB)

julia> A = rand(10000,10000);

julia> B = A[500,2:2:10000];

julia> C = view(A,500,2:2:10000);

julia> @btime sort(B);
 192.972 μs (2 allocations: 39.14 KiB)

julia> @btime sort(C);
 232.201 μs (2 allocations: 39.14 KiB)
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
using BenchmarkTools

function f1(v)
   sort!(v)
end

v = rand(1000);
v2 = rand(2000);

v2[500:1499] .= v;

julia> @btime f1(vv) setup = (vv = deepcopy($v)) evals = 1;
 12.691 μs (0 allocations: 0 bytes)

julia> @btime f1(vv) setup = (vv1 = deepcopy($v2); vv = @view vv1[500:1499]) evals = 1;
 22.739 μs (0 allocations: 0 bytes)
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Я имел в виду in-place сортировку.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Надо было сказать об этом конечно.
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
А если попробовать увеличить размерности, что получается? У меня sort и sort! не дают принципиальную разницу на размерностях порядка 10000
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Но у меня в задаче размеры как раз не очень большие...
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Не, на самом деле я вообще этого избежал, поменяв подход :-))
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Но тем не менее как вопрос это осталось.
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
Андрей Оськин
using BenchmarkTools

function f1(v)
   sort!(v)
end

v = rand(1000);
v2 = rand(2000);

v2[500:1499] .= v;

julia> @btime f1(vv) setup = (vv = deepcopy($v)) evals = 1;
 12.691 μs (0 allocations: 0 bytes)

julia> @btime f1(vv) setup = (vv1 = deepcopy($v2); vv = @view vv1[500:1499]) evals = 1;
 22.739 μs (0 allocations: 0 bytes)
У меня получилось 15.5 против 18.5 в пользу массивов на Вашем примере
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
Julia 1.5.3
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
В смысле, что view помедленнее?
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
Да, view чуть медленнее
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
А, если sort просто, без !, то 16.0 микро секунд (массивы), против 16.5 (view)
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Потому что в этом случае он аллоцирует массив и туда видимо копирует все что ему нужно
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Тогда неважно, что там в начале
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
Как не важно? Прочитать-то данные надо, но, видимо, важно в 2 раза меньше
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
Если размерности увеличить в 5 раз, то с sort! уже массивы проигрывают: 189 микросекунд против 175. Вот это мне не понятно
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Ну, просто для копирования данных могут другие операции использоваться нежели для поэлементного чтения, поэтому в принципе разница и в самом деле может быть не важной.
А вот то, что c view быстрее чем без него, это и правда парадокс.
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
Проверите, как у Вас на большой размерности?
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Хм, сек.

Я тут пока чторазвлекался с кастомными типами.
источник