Быстрая перегрузка межплатформенной альтернативы файлам MX (Mathematica)

В Mathematica можно сохранить промежуточные результаты/частичное состояние рабочей области с помощью Save (.m файлов) или DumpSave (.mx файлов).

.m файлы переносимы, но очень медленны для загрузки (с большими данными).

.mx файлы быстро загружаются, но не переносятся между платформами/архитектурами.

Есть ли способ сохранить общие выражения Mathematica таким образом, чтобы их загрузка была быстрой, и они переносимы между платформами? Кто-нибудь экспериментировал с другими методами для этого?

Одним из возможных решений является сохранение файлов .m(кросс-платформенная), а затем преобразование их в файлы .mx при запуске работы на новой платформе (одноразовая операция). Есть ли полностью автоматический способ преобразования файлов .m в файлы .mx?

Ответ 1

  • Из сообщений, связанных Alexey:

    str=OpenWrite[file,BinaryFormat->True];
    
    BinaryWrite[str,Compress[expr],"TerminatedString"];
    
    Close[str];
    

    Это не так быстро, как использование файла mx, но все еще очень быстро.

    Дэвид Бэйли


    Другим вариантом является WDX (Wolfram Data eXchange), который я без проблем на разных машинах, что также кажется быть переносимым, может использоваться точно так же, как файлы MX, является двоичным, документируется и, таким образом, я бы счел официально поддержанным. И он используется данных, так что я думаю, что он достаточно эффективен и хорошо протестированы на всех системах (предположение, которое мой опыт поддержка до сих пор).

    (выдержка из ответа Альберта Рети, также из ссылки Алексея)

Но они не работают как Save/DumpSave, так как он не сохраняет FullDefinition of expr, только явное значение expr.