Ответ 1
ОБНОВЛЕНИЕ: В R2015b была изменена семантика clear
. Возможно, в ответ на проблемы, поднятые в этом вопросе, изменения указанные в примечаниях к выпуску, следующие:
Функция
clear
больше не удаляет точки останова отладки. Чтобы очистить точки останова, используйтеdbclear all
.Функция
clear
очищает только те функции, которые в данный момент не выполняются. Например, когда вы вызываетеclear myFun
, пока выполняетсяmyFun
,myFun
не очищается.
Эта часть относится к версиям MATLAB до R2015b.
Здесь таблица того, что очищается с каждым входным аргументом.
Таблица для R2015b идентична, за исключением того, что столбцы "Отладка контрольных точек" больше не удаляются, так как они не очищаются с помощью clear
.
Сценарии и функции очищаются, когда вы можете просто clear variables
(красные ящики). Не имеет смысла очищать функцию из памяти, которая в настоящее время выполняется. (Согласно примечаниям выпуска R2015b этого не происходит.)
Кроме того, имея в виду, что скрипты выполняются в базовой рабочей области, вы очищаете все функции, которые могут использоваться другими скриптами. Попробуйте просмотреть результат inmem
после расширенного сеанса мастеринга MATLAB. Вы заполняете все функции MATLAB, которые загружаются в память для быстрого доступа (включая 'matlabrc'
, 'pathdef'
и другие основные сценарии, которые настраивают ваше рабочее пространство). Таким образом, возможно, это не то, что он повреждает производительность только script, где вы вызываете clear all
, но все остальные скрипты и интерактивную командную строку, находящуюся в базовой рабочей области.. Это было бы моим предположением.
Не связано с производительностью, но еще одна причина, по которой clear all
в script может быть плохой идеей, заключается в том, что она очистит точки останова (это может раздражать!) и глобальные + постоянные переменные. Однако, возможно, цель состоит в том, чтобы очистить глобальные и постоянные переменные. Для global там clear global
, но нет ничего подобного для постоянных, поскольку постоянные переменные привязаны к функциям, и для них вы должны использовать clear functions
или clear whateverFunctionName
.