Eu conservo memória no MATLAB declarando variáveis ​​globais em vez de passá-las como argumentos?

Eu sou novo no MATLAB, não estava na descrição do trabalho e fui forçado a assumir a pessoa que escreveu e manteve o código que minha empresa usa. A vida é dura.

O cara do qual eu estou assumindo me disse que ele declarou todos os vetores de big data comoglobal, para economizar memória. Mais especificamente, de modo que quando uma função chama outra função, ele não cria uma cópia dos dados quando a passa.

Isso é verdade? Eu leioEstratégias para Uso Eficiente da Memóriae diz que

Ao trabalhar com grandes conjuntos de dados, esteja ciente de que o MATLAB faz uma cópia temporária de uma variável de entrada se a função chamada modificar seu valor. Isso temporariamente dobra a memória necessária para armazenar a matriz, o que faz com que o MATLAB gere um erro se não houver memória suficiente disponível.

Diz algo muito semelhante emAlocação de memória para argumentos de #Function de matriz:

Quando você passa uma variável para uma função, na verdade você está passando uma referência para os dados que a variável representa. Contanto que os dados de entrada não sejam modificados pela função que está sendo chamada, a variável na função de chamada e a variável na função chamada apontam para o mesmo local na memória. Se a função chamada modificar o valor dos dados de entrada, o MATLAB fará uma cópia do array original em um novo local na memória, atualizará as cópias com o valor modificado e apontará a variável de entrada na função chamada para esse novo array.

Então, é verdade que usandoglobal pode ser melhor? Parece um pouco desleixado declarar alegremente todos os dados grandes comoglobal, em vez de se certificar de que nenhum dos códigos modifica seu argumento de entrada. Estou errado? Isso realmente melhora o uso de RAM?

questionAnswers(4)

yourAnswerToTheQuestion