Срезы в Julia копируют. Это известно, но внутри цикла вылетело из головы. Возьмём функцию, которая идёт по столбцам матрицы и для каждого j делает s += sum(A[:, j]). Каждый A[:, j] строит новый вектор, суммирует его и выбрасывает. @time показал, что выделений становится больше вместе с числом столбцов, а в советах по производительности неожиданное выделение памяти названо почти всегда признаком проблемы.
view(A, :, j) или @views перед циклом превращают срез в SubArray, который смотрит прямо в A, и копирование исчезает.
Любопытно стало, что ещё меняет @views. Он превращает в представление каждый срез в обёрнутом выражении, в том числе справа от присваивания. Значит, x = A[:, j] внутри блока @views даёт представление, и запись в x потом пишет в A. Вполне разумно, когда это видишь. Но легко пропустить, если повесить @views на всю функцию ради одного цикла, а где-то ниже функция нарочно копирует столбец.