Сохраняю ли я память в MATLAB, объявляя переменные глобальными вместо передачи их в качестве аргументов?

Я новичок в MATLAB, это не былот в описании работы, и яЯ был вынужден взять на себя ответственность за человека, который написал и поддерживал код, который использует моя компания. Жизнь»Это сложно.

Парень из которого ям сказал, что он объявил все большие векторы данных какglobal, чтобы сохранить память. Точнее говоря, когда одна функция вызывает другую, он неt создать копию данных, когда он передает их.

Это правда? Я читаюСтратегии для эффективного использования памятии это говорит о том, что

При работе с большими наборами данных помните, что MATLAB делает временную копию входной переменной, если вызываемая функция изменяет ее значение. Это временно удваивает объем памяти, необходимый для хранения массива, что заставляет MATLAB выдавать ошибку, если недостаточно памяти.

Это говорит что-то очень похожее наВыделение памяти для массива # Аргументы функций:

Когда вы передаете переменную в функцию, вы фактически передаете ссылку на данные, которые представляет переменная. Пока входные данные не изменяются вызываемой функцией, переменная в вызывающей функции и переменная в вызываемой функции указывают на одно и то же место в памяти. Если вызываемая функция изменяет значение входных данных, то MATLAB создает копию исходного массива в новом месте в памяти, обновляет эту копию с измененным значением и указывает входную переменную в вызываемой функции на этот новый массив.

Так правда ли, что использованиеglobal может быть лучше? Кажется, немного небрежно объявить все большие данные какglobalвместо того, чтобы убедиться, что ни один из кодов не изменяет свой входной аргумент. Я ошибся? Это действительно улучшает использование оперативной памяти?

Ответы на вопрос(4)

Ваш ответ на вопрос