شخصیسازی فرآیند ساخت با استفاده از پروفایلهای نسخه انتشار
در Rust، پروفایلهای نسخه انتشار پروفایلهایی از پیش تعریفشده و قابل شخصیسازی هستند که با پیکربندیهای مختلف به برنامهنویس اجازه میدهند کنترل بیشتری روی گزینههای مختلف کامپایل کد داشته باشد. هر پروفایل به صورت مستقل از دیگران پیکربندی میشود.
Cargo دو پروفایل اصلی دارد: پروفایل dev
که Cargo هنگام اجرای دستور 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 روی کد شما اعمال شود، و این مقدار در بازهای از ۰ تا ۳ قرار دارد. اعمال بهینهسازیهای بیشتر زمان کامپایل را افزایش میدهد، بنابراین اگر در حال توسعه هستید و کدتان را مرتباً کامپایل میکنید، ترجیح میدهید بهینهسازی کمتری انجام شود تا سرعت کامپایل بالاتر باشد، حتی اگر اجرای نهایی برنامه کندتر باشد. به همین دلیل، مقدار پیشفرض opt-level
برای پروفایل dev
برابر با 0
است. زمانی که آمادهی انتشار کد خود هستید، بهتر است زمان بیشتری را صرف کامپایل کنید. شما فقط یکبار در حالت انتشار کامپایل انجام میدهید، اما برنامهی کامپایلشده را بارها اجرا خواهید کرد، بنابراین حالت انتشار زمان کامپایل بیشتر را با اجرای سریعتر برنامه مبادله میکند. به همین دلیل، مقدار پیشفرض opt-level
برای پروفایل release
برابر با 3
است.
Filename: Cargo.toml
[profile.dev]
opt-level = 1
این کد تنظیم پیشفرض 0
را بازنویسی میکند. اکنون، زمانی که cargo build
را اجرا میکنیم، Cargo از تنظیمات پیشفرض برای پروفایل dev
به همراه سفارشیسازی ما برای opt-level
استفاده خواهد کرد. از آنجایی که ما مقدار opt-level
را به 1
تنظیم کردهایم، Cargo بهینهسازیهای بیشتری نسبت به پیشفرض اعمال خواهد کرد، اما نه به اندازه یک ساخت در حالت release
.
برای مشاهده لیست کامل گزینههای پیکربندی و تنظیمات پیشفرض برای هر پروفایل، به مستندات Cargo مراجعه کنید.