شخصیسازی فرآیند ساخت با استفاده از پروفایلهای نسخه انتشار
در Rust، پروفایلهای نسخه انتشار پروفایلهایی از پیش تعریفشده و قابل شخصیسازی هستند که با پیکربندیهای مختلف به برنامهنویس اجازه میدهند کنترل بیشتری روی گزینههای مختلف کامپایل کد داشته باشد. هر پروفایل به صورت مستقل از دیگران پیکربندی میشود.
Cargo دو پروفایل اصلی دارد: پروفایل dev
که هنگام اجرای cargo build
استفاده میشود و پروفایل release
که هنگام اجرای cargo build --release
استفاده میشود. پروفایل dev
با تنظیمات پیشفرض مناسب برای توسعه و پروفایل release
با تنظیمات پیشفرض مناسب برای ساخت نسخههای انتشار تعریف شدهاند.
این نامهای پروفایل ممکن است از خروجیهای ساخت شما آشنا به نظر برسند:
$ cargo build
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
$ cargo build --release
Finished `release` profile [optimized] target(s) in 0.32s
dev
و release
پروفایلهای متفاوتی هستند که توسط کامپایلر استفاده میشوند.
Cargo تنظیمات پیشفرضی برای هر یک از پروفایلها دارد که زمانی اعمال میشوند که هیچ بخش [profile.*]
در فایل Cargo.toml پروژه شما به طور صریح اضافه نشده باشد. با افزودن بخشهای [profile.*]
برای هر پروفایلی که میخواهید سفارشی کنید، میتوانید هر بخشی از تنظیمات پیشفرض را بازنویسی کنید. به عنوان مثال، در اینجا مقادیر پیشفرض تنظیم opt-level
برای پروفایلهای dev
و release
آورده شده است:
Filename: Cargo.toml
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
تنظیم opt-level
تعداد بهینهسازیهایی که Rust روی کد شما اعمال میکند را کنترل میکند و محدودهای از 0 تا 3 دارد. اعمال بهینهسازیهای بیشتر زمان کامپایل را افزایش میدهد، بنابراین اگر در حال توسعه هستید و کد خود را اغلب کامپایل میکنید، بهینهسازیهای کمتری میخواهید تا سریعتر کامپایل شود حتی اگر کد نهایی کندتر اجرا شود. بنابراین مقدار پیشفرض opt-level
برای dev
برابر 0
است. وقتی آماده انتشار کد خود هستید، بهتر است زمان بیشتری برای کامپایل صرف کنید. شما فقط یک بار در حالت انتشار کامپایل خواهید کرد، اما برنامه کامپایلشده را بارها اجرا خواهید کرد. بنابراین حالت انتشار زمان کامپایل طولانیتر را با اجرای سریعتر کد معامله میکند. به همین دلیل مقدار پیشفرض opt-level
برای پروفایل release
برابر 3
است.
شما میتوانید یک تنظیم پیشفرض را با افزودن یک مقدار متفاوت برای آن در فایل Cargo.toml بازنویسی کنید. برای مثال، اگر بخواهیم از سطح بهینهسازی 1 در پروفایل توسعه استفاده کنیم، میتوانیم این دو خط را به فایل Cargo.toml پروژه خود اضافه کنیم:
Filename: Cargo.toml
[profile.dev]
opt-level = 1
این کد تنظیم پیشفرض 0
را بازنویسی میکند. اکنون، زمانی که cargo build
را اجرا میکنیم، Cargo از تنظیمات پیشفرض برای پروفایل dev
به همراه سفارشیسازی ما برای opt-level
استفاده خواهد کرد. از آنجایی که ما مقدار opt-level
را به 1
تنظیم کردهایم، Cargo بهینهسازیهای بیشتری نسبت به پیشفرض اعمال خواهد کرد، اما نه به اندازه یک ساخت در حالت release
.
برای مشاهده لیست کامل گزینههای پیکربندی و تنظیمات پیشفرض برای هر پروفایل، به مستندات Cargo مراجعه کنید.