Есть ли ускорение, связанное с освобождением массивов, которые используются только в MEX-файле - PullRequest
0 голосов
/ 21 марта 2012

В настоящее время я кодирую MEX-файл, который должен запускаться как можно быстрее и который вызывается MATLAB несколько раз в отдельном файле .m. MEX-файл создает и использует несколько переменных в C (большинство из них в первую очередь двойные массивы).

Мне интересно, будет ли ускорение при удалении / освобождении переменных, которые я использую только в файле MEX. Насколько я знаю, MATLAB уже делает это, хотя я также слышал, что некоторые люди предпочитают сами освобождать эти массивы.

1 Ответ

2 голосов
/ 21 марта 2012

Вы должны очистить массивы, которые вы выделяете сами. Это правда, что менеджер памяти MATLAB сделает это за вас, но в зависимости от реализации менеджера памяти он может быть не очень детерминированным. Несмотря на то, что вы не заметите каких-либо улучшений в скорости, вероятно, будут улучшения в использовании памяти.

Кроме того, MATLAB выполняет сборку мусора только для вещей, созданных с использованием mxMalloc и mxCalloc. Если вы используете обычные malloc и calloc и не free выделенную память, вы вызываете утечку.

...