Вопрос: Я хотел бы индексировать массив без запуска распределения памяти, особенно при передаче индексированных элементов в функцию. Из чтения документов Julia я подозреваю, что ответ вращается вокруг, используя функцию sub
, но не могу понять, как...
Рабочий пример: Я строю большой вектор Float64
(x
), а затем индекс для каждого наблюдения в x
.
N = 10000000
x = randn(N)
inds = [1:N]
Теперь я выполняю функцию mean
по x
и x[inds]
(сначала я запускаю mean(randn(2))
, чтобы избежать каких-либо несоответствий компилятора в синхронизации):
@time mean(x)
@time mean(x[inds])
Это идентичный расчет, но, как и ожидалось, результаты таймингов:
elapsed time: 0.007029772 seconds (96 bytes allocated)
elapsed time: 0.067880112 seconds (80000208 bytes allocated, 35.38% gc time)
Итак, существует ли способ решения проблемы распределения памяти для произвольного выбора inds
(и произвольного выбора массива и функции)?