کاهش زمان بارگیری اولیه در جولیا (sysimage)
یک sysimage فایلی است که حاوی بسته های بارگیری شده و کدهای کامپایل شده و … است.
با شروع Julia همراه با یک sysimage جلسات (session) های ذخیره شده بارگیری می شوند.
مزیت استفاده از sysimage این هست که زمان بارگیری اولیه بسته ای که به sysimage اضافه شده حذف می شود.
عیب استفاده از اون هم این هست که پکیج در حالت قفل شده می ماند و امکان آپدیت کردن آن وجود ندارد. اگر پکیج مورد نظر نیاز به آپدیت داشته باشد باید پس از به روز رسانی مجدد sysimage ساخته شود.
ایجاد sysimage با استفاده از بسته ی PackageCompiler
به طور خلاصه با استفاده از دستورات زیر میشه یک فایل sysimage.so بسازید.
یک مسیر برای فایل ایجاد کنید:
12$ mkdir sysimages $ cd sysimages
جولیا را اجرا کنید. -q فقط برای باز کردن محیط بدون بنر (به حالت quiet) هست.
1$ julia -q
پکیج PackageCompiler را صدا بزنید. اگر نصب نشده ابتدا نصب کنید.
123julia> #import Pkg julia> # Pkg.add("PackageCompiler") julia> using PackageCompiler
یک براکت تایپ کنید تا به محیط REPL بروید.
1julia> ] # ptess ] to go to REPL environment
1(v1.4) pkg> activate .
یک backspace بزنید تا از این محیط خارج شوید.
حالا بسته های مورد نظر رو اضافه و بعد بارگیری کنید. (اگر از قبل نصب کرده باشید هم لازم هست که مجدد اضافه کنید تا به لیست محیط فعال اضافه بشه.)
1234(v1.4) add DifferentialEquations (v1.4) add OhMyREPL julia> using DifferentialEquations julia> using OhMyREPL
در انتها هم فایل sysimage.so را بسازید. این کار ممکنه چند دقیقه طول بکشد بنابراین صبور باشید.
1PackageCompiler.create_sysimage([:OhMyREPL, :DifferentialEquations]; sysimage_path="sysimage.so")
☘️ برای استفاده از فایل sysimage.so هم اینطور عمل کنید:
1$ julia -J[path to sysmage.so]
1for example:
1$ julia -J/home/abolfazl/sysimages/sysimage.so
حالا با بارگیری کردن بسته هایی که از قبل به فایل .so اضافه کرده اید تفاوت زمان بارگیری پکیج ها را احساس کنید.
میتونید به جای ایجاد فایل sysimage در یک مسیر دلخواه اون رو جایگزین حالت پیشفرض کنید. بنابراین جولیا به طور پیشفرض در هنگام شروع از اون فایل استفاده میکنه.
این ویژگی با اضافه کردن
1replace_default=true
به دستور create_sysimage قابل استفاده است.
اینجا بیشتر بخوانید.
کانال تلگرامی: scientific_programming@