Запуск файла Julia в REPL

julia> include("foo.jl")
julia> include("foo.jl")

Дает разное время работы, но, похоже, это не тот случай, когда я запускаю его с терминала

$ julia foo.jl
$ julia foo.jl

Есть ли стандартный метод сохранения скомпилированных файлов вне Юлии?

0
user15988 11 Фев 2021 в 19:54

3 ответа

Лучший ответ

Обычно Julia компилирует функции в первый раз, когда они используются в данном экземпляре Julia, поэтому каждый раз, когда вы вызываете julia foo.jl из командной строки, вам нужно будет повторно скомпилировать любой код, который вызывается в foo.jl.

Если вы хотите сохранить скомпилированную версию foo.jl, вы можете использовать пакет PackageCompiler (https://github.com/JuliaLang/PackageCompiler.jl), который заменит исходный двоичный файл Julia (где код в foo.jl не был скомпилирован) новым, в котором {{X3 }} был скомпилирован.

Обратите внимание, что вы, вероятно, не захотите этого делать, если вы активно разрабатываете foo.jl, так как создание каждого нового системного образа Julia занимает некоторое время. В этом случае вы можете просто создать небольшой скрипт, который загружает все пакеты и вызывает те же функции, которые вы хотите вызвать. После компиляции этого системного образа вы сможете импортировать те же пакеты и использовать те же функции без дополнительного времени компиляции.

3
Gabriel Hassler 11 Фев 2021 в 17:47

Если вы повторно запускаете его для проверки изменений в базовом коде, также рассмотрите возможность использования Revise. .

1
tholy 12 Фев 2021 в 16:35

Существует пакет Julia для запуска Julia в качестве демона: https://github.com/dmolina/DaemonMode. jl, который стоит проверить. Не совсем отвечает на вопрос «как сохранить скомпилированный код Julia», но, вероятно, может улучшить рабочий процесс, который вам нужен.

0
fredrikekre 12 Фев 2021 в 12:14