DumpSave
хранит значения, связанные с символом, т.е. OwnValues
, DownValues
, UpValues
, SubValues
, DefaultValues
, NValues
, FormatValues
.
Вся оценка была сделана в сеансе на Mathematica, а затем DumpSave
сохранил результат.
Эти значения хранятся во внутреннем формальном. Чтение файлов MX создает только символы и заполняет их этими значениями, считывая этот внутренний формат обратно, минуя оценщик.
Может быть, вы могли бы поделиться проблемой, которая побудила вас задать этот вопрос.
[ПРАВИТЬ] Разъяснение вопроса, поднятого Алексеем. Файлы MX сохраняют внутреннее представление определений символов. Похоже, что Mathematica внутренне отслеживает:
f[x_Real] := x^2 + 1
DumpSave[FileNameJoin[{$HomeDirectory, "Desktop", "set_delayed.mx"}],
f];
Remove[f]
f[x_Real] = x^2 + 1;
DumpSave[FileNameJoin[{$HomeDirectory, "Desktop", "set.mx"}], f];
setBytes =
Import[FileNameJoin[{$HomeDirectory, "Desktop", "set.mx"}], "Byte"];
setDelayedBytes =
Import[FileNameJoin[{$HomeDirectory, "Desktop", "set_delayed.mx"}],
"Byte"];
Затем можно использовать SequenceAlignment[setBytes, setDelayedBytes]
, чтобы увидеть разницу. Я не знаю, почему это так, но моя точка зрения остается верной. Вся оценка значений, построенных с использованием Set
, уже была выполнена в сеансе Mathematica до того, как они были сохранены с помощью DumpSave
. При чтении файла MX внутреннее представление считывается обратно в сеансы Mathematica, и оценка загруженных определений фактически не выполняется.