Что означает .=+ в Джулии?

Я новичок в Юлии и стараюсь сделать свою программу максимально эффективной. Моя программа должна много вычислять с матрицами, и я наткнулся на оператора вещания, который сильно все ускорил. Однако теперь я нашел еще один своеобразный способ сделать расчет.

Первая версия была: (оба являются матрицами NxN) `

hist .= hist .+ mask

Мой алгоритм, включающий эту строку, выполнялся примерно за 1 секунду на итерацию.

Теперь я подумал, давайте будем умнее и объединим .= и .+ Поэтому я попробовал .+=, так как += работает, и мне просто нужно было это транслировать. Однако, как вы, возможно, знаете, это не сработало.

Случайно я попробовал эту версию моего кода:

hist .=+ mask

И что удивительно, это сократило время выполнения до 0,2 секунды.

Может кто-нибудь объяснить мне значение .=+ и почему это не .+=? Или это даже то же самое? Заранее спасибо!

Обновлено: моя IDE была проблемой, почему .+= не работал. Однако это правильный способ сделать это!

Разве это не просто hist .= +mask, что означает hist .= mask и, таким образом, сильно отличается от hist .+= mask. Вы проверяли результаты?

Jérôme Richard 09.04.2023 23:52
.+= действительно правильный способ трансляции +=, поэтому я не уверен, почему вы говорите, что «как вы, возможно, знаете, это не сработало». Он должен работать. С другой стороны, .=+ — бессмысленный оператор, и, вероятно, он просто делает .=
DNF 10.04.2023 00:12

Спасибо за разъяснение. По какой-то причине .+= выдало ошибку, поэтому я предположил, что .=+ - правильный способ сделать это. Я ценю разъяснение!

Oliver 10.04.2023 09:50
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
TL;DR: Angular Signals может облегчить отслеживание всех выражений в представлении (Component или EmbeddedView) и планирование пользовательских...
Sniper-CSS, избегайте неиспользуемых стилей
Sniper-CSS, избегайте неиспользуемых стилей
Это краткое руководство, в котором я хочу поделиться тем, как я перешел от 212 кБ CSS к 32,1 кБ (сокращение кода на 84,91%), по-прежнему используя...
0
3
163
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как указано в комментариях, .=+ не является оператором в Юле. Вы ищете .+=.

Чтобы объяснить наблюдаемое вами поведение, hist .=+ mask анализируется как hist .= (+mask), что в данном случае эквивалентно широковещательному назначению hist .= mask, которое присваивает каждому элементу mask соответствующий элемент hist. Это быстрее, чем hist .+= mask, потому что .=+ не делает то, что вы думали. Он пропускает добавление.

Другие вопросы по теме