Отобразите использование памяти

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Используйте строку состояния

Объем памяти, доступный на вашем компьютере, может значительно влиять на ваши символьные расчеты. Во-первых, некоторые расчеты не могут запуститься без достаточной памяти. В этом случае вы добираетесь “из памяти” ошибка. Во-вторых, если механизм MuPAD® использует виртуальную память путем свопинга данных по и от устройства хранения данных, расчеты могут запуститься намного медленнее, чем они запускаются, если система не использует виртуальную память. Наблюдение использования памяти при выполнении кода может помочь вам понять, использует ли ваш код доступную память эффективно.

Самый простой инструмент для наблюдения использования памяти является строкой состояния. Можно найти строку состояния в нижней части блокнота MuPAD. Если вы не видите строку состояния, выберите View > Status Bar. Крайне левый конец строки состояния отображает текущее состояние механизма, включая память и время, используемое во время новых расчетов. В то время как расчет все еще запускается, информация о строке состояния продолжает изменяться.

Если механизм не соединяется с вашим блокнотом, строка состояния отображает Not Connected. Для получения дополнительной информации о строке состояния, смотрите Информацию о статусе Просмотра.

Примечание

Когда вы выполняете расчеты в нескольких блокнотах MuPAD, каждый блокнот запускает свой собственный двигатель. В этом случае см. за общей суммой памяти, используемой всеми механизмами MuPAD (процессы mupkern.exe).

Генерируйте отчеты использования памяти периодически

Когда расчет занимает много времени, чтобы запуститься, может быть полезно отобразить информацию о прогрессе. В этом случае MuPAD может выпустить периодические сообщения, показывающие использование активной памяти, зарезервированную память, и время оценки. Можно управлять частотой, с которой MuPAD распечатывает такие сообщения.

Чтобы установить частоту этих периодических сообщений, используйте Pref::report функция. По умолчанию, значение Pref::report 0; MuPAD не распечатывает периодические сообщения о состоянии. Если вы увеличиваете значение к 1, MuPAD распечатывает сообщения о состоянии приблизительно каждый час. (Точная частота зависит от вашей машины.) Максимальное значение принято Pref::report 9.

Предположим, что вы хотите сгенерировать и отсортировать список 10 000 000 случайных целых чисел. Эти операции занимают много времени из-за огромного числа элементов. Если вы устанавливаете значение Pref::report к 4, MuPAD отображает несколько сообщений о состоянии при выполнении этих операций:

Pref::report(4):
sort([random() $ i = 1..10^7]):
 [used=167852k, reserved=168579k, seconds=30]
[used=294614k, reserved=295370k, seconds=60] [used=421376k, reserved=422161k,
seconds=90] 

Если вы увеличиваете значение Pref::report к 6, MuPAD распечатывает сообщения о состоянии более часто:

Pref::report(6):
sort([random() $ i = 1..10^7]):
 [used=84035k, reserved=84661k, seconds=10]
[used=126987k, reserved=127664k, seconds=21] [used=169940k, reserved=170600k,
seconds=32] [used=212892k, reserved=213537k, seconds=43] [used=255844k,
reserved=256540k, seconds=54] [used=298797k, reserved=299476k, seconds=65]
[used=341749k, reserved=342413k, seconds=76] [used=384701k, reserved=385416k,
seconds=87] [used=427654k, reserved=428352k, seconds=98] [used=470606k,
reserved=471355k, seconds=109] 

Каждый раз, когда вы выполняете этот пример, MuPAD добавляет новый список 107 случайных чисел и хранилищ, которые перечисляют в таблице истории. По умолчанию таблица истории содержит до 20 элементов. В то время как этот список остается в таблице истории, MuPAD не может выпустить память, должен был сохранить 107 целых чисел. Чтобы выпустить эту память, используйте одну из этих альтернатив:

  • Продолжите расчеты, ожидая, пока MuPAD не запишет 20 новых элементов в таблицу истории. Выполнение расчетов с уменьшаемой суммой доступной памяти может быть очень медленным.

  • Отключите механизм MuPAD, соединенный с блокнотом путем выбора Notebook > Disconnect. Новый механизм запускается, когда вы оцениваете любую команду в блокноте.

  • Очистите таблицу истории путем устанавливания значения переменной HISTORY к 0. Эта переменная задает максимальное количество элементов в таблице истории. Восстановить значение по умолчанию HISTORY, введите delete HISTORY:

HISTORY := 0:
delete HISTORY:
HISTORY

Для получения дополнительной информации о механизме истории в MuPAD, смотрите Механизм Истории.

Для дальнейших расчетов также восстановите значение по умолчанию Pref::report:

Pref::report(NIL):

Сгенерируйте отчеты использования памяти для вызовов процедуры

MuPAD может распечатать информацию об использовании памяти, когда вы выполняете процедуру в режиме трассировки. В этом случае система сообщает об использовании памяти относительно каждого шага вызова процедуры.

Например, создайте рекурсивную процедуру juggler это вычисляет последовательность номера Жонглера для любого начального положительного целочисленного n:

juggler := proc(n:Type::PosInt)
begin
  J := append(J, n);
  if n = 1 then
    return(J)
  end_if:
  if testtype(n, Type::Even) then
    juggler(floor(n^(1/2)))
  else
    juggler(floor(n^(3/2)))
  end_if
end_proc:

Предположим, что вы хотите видеть отчет использования памяти для каждого вызова этой процедуры. Сначала вызовите prog::trace функция с Mem опция. Затем переключите выполнение juggler процедура к режиму трассировки:

prog::trace(Mem):
prog::trace(juggler)

Теперь, когда вы вызываете juggler процедура, отчет трассировки показывает использование памяти для каждого вызова juggler:

J := []:
juggler(7)
enter
juggler(7) [mem: 5338408]   enter juggler(18) [mem: 5373600]     enter
juggler(4) [mem: 5374080]       enter juggler(2) [mem: 5374584]  
      enter juggler(1) [mem: 5375064]         computed [7, 18, 4,
2, 1] [mem: 5375032]       computed [7, 18, 4, 2, 1] [mem: 5374648]
    computed [7, 18, 4, 2, 1] [mem: 5374264]   computed [7, 18, 4,
2, 1] [mem: 5373880] computed [7, 18, 4, 2, 1] [mem: 5373524] 

Mem опция независима от прослеженной процедуры. Теперь, если вы используете prog::trace прослеживать любую другую процедуру, prog::trace использование памяти отображений на каждом шаге той процедуры. Удалите эту глобальную опцию для дальнейших расчетов:

prog::trace(Mem = FALSE)

Прекратить прослеживать juggler процедура, используйте prog::untrace функция:

prog::untrace(juggler):
Для просмотра документации необходимо авторизоваться на сайте