شخصی‌سازی فرآیند ساخت با استفاده از پروفایل‌های نسخه انتشار

در 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 مراجعه کنید.