شخصیسازی فرآیند ساخت با استفاده از پروفایلهای نسخه انتشار
در 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 مراجعه کنید.