Где хранятся «постоянные» данные в скомпилированных программах MATLAB? - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть приложение в MATLAB, которое кэширует данные, когда они загружаются в себя.Эти данные «кэшируются» в функциях с помощью команды «persistent».Например,

persistent data
if isempty(data)
    data = getData() % function that reads data in
end

Когда эти данные кэшируются, куда они идут? Я заметил, что кеш сохраняется даже после закрытия и повторного открытия программы. Записывается ли он на диск?Или кеш хранится в памяти?

Некоторые подробности: это программа, созданная с использованием Matlab Compiler Runtime, написанная с использованием R2014b.Я не знаю, как проверить, насколько большими могут быть данные, поэтому любая помощь в этом отношении будет бонусом.

РЕДАКТИРОВАТЬ: Кэш не сохраняется во всех экземплярах программы, которые я вижу.Первоначально я наблюдал это в некомпилированной версии моей программы, и это имело бы смысл, потому что кэш сохранялся бы вместе с экземпляром matlab.

1 Ответ

0 голосов
/ 04 декабря 2018

Он хранится в памяти.Он должен быть постоянным в сеансе MATLAB, как вы заметили при редактировании, но не в разных сеансах.Если вы компилируете его и запускаете в среде выполнения компилятора MATLAB, он не должен сохраняться при закрытии и повторном запуске скомпилированной программы - если это произойдет, это ошибка.

Я никогда не видел, чтобы это происходило с откомпилированными исполняемыми файлами, ноЯ видел, как это происходит с скомпилированными компонентами, созданными для использования с MATLAB Production Server (где одна и та же среда выполнения может использоваться несколько раз, и она не корректно очищает вещи между вызовами).

...