การปรับแต่งการบิลด์ด้วยโปรไฟล์การรีลีส (Release Profiles)
ในภาษา Rust โปรไฟล์การรีลีส (release profiles) คือโปรไฟล์ล่วงหน้าที่ถูกกำหนดไว้และสามารถปรับแต่งได้ ซึ่งมีโครงร่างการตั้งค่า (configurations) ที่แตกต่างกัน ช่วยให้โปรแกรมเมอร์สามารถควบคุมตัวเลือกต่าง ๆ ในการคอมไพล์โค้ดได้มากขึ้น แต่ละโปรไฟล์จะถูกกำหนดค่าแยกจากกันอย่างเป็นอิสระ
Cargo มีโปรไฟล์หลัก 2 โปรไฟล์ คือ โปรไฟล์ dev ซึ่ง Cargo จะใช้งานเมื่อคุณรัน cargo build และโปรไฟล์ release ซึ่ง Cargo จะใช้งานเมื่อคุณรัน 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.*] สำหรับโปรไฟล์ที่คุณต้องการปรับแต่ง จะเป็นการเขียนทับ (override) ส่วนย่อยของการตั้งค่าเริ่มต้น ตัวอย่างเช่น นี่คือค่าเริ่มต้นของตั้งค่า opt-level สำหรับโปรไฟล์ dev และ release:
ชื่อไฟล์: Cargo.toml
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
การตั้งค่า opt-level จะควบคุมจำนวนการปรับปรุงประสิทธิภาพ (optimizations) ที่ Rust จะนำมาใช้กับโค้ดของคุณ โดยมีช่วงตั้งแต่ 0 ถึง 3 การใช้นวัตกรรมการปรับปรุงประสิทธิภาพที่มากขึ้นจะเพิ่มเวลาในการคอมไพล์ ดังนั้น หากคุณอยู่ในช่วงการพัฒนาและคอมไพล์โค้ดบ่อยครั้ง คุณจะต้องการการปรับปรุงประสิทธิภาพที่น้อยลงเพื่อให้คอมไพล์ได้เร็วขึ้น แม้ว่าโค้ดผลลัพธ์จะทำงานช้าลงก็ตาม ค่าเริ่มต้นของ opt-level สำหรับ dev จึงเป็น 0 เมื่อคุณพร้อมที่จะรีลีสโค้ดของคุณ การใช้เวลาคอมไพล์มากขึ้นจะเป็นเรื่องที่ดีที่สุด เพราะคุณจะคอมไพล์ในโหมดรีลีสเพียงครั้งเดียว แต่จะรันโปรแกรมที่คอมไพล์แล้วหลายครั้ง โหมดรีลีสจึงยอมแลกเวลาคอมไพล์ที่นานขึ้นเพื่อให้โค้ดทำงานได้เร็วขึ้น นั่นคือเหตุผลที่ค่าเริ่มต้นของ opt-level สำหรับโปรไฟล์ release จึงเป็น 3
คุณสามารถเขียนทับการตั้งค่าเริ่มต้นได้โดยการเพิ่มค่าอื่นสำหรับมันใน Cargo.toml ตัวอย่างเช่น หากเราต้องการใช้ระดับการปรับปรุงประสิทธิภาพที่ 1 ในโปรไฟล์การพัฒนา เราสามารถเพิ่มสองบรรทัดนี้ลงในไฟล์ Cargo.toml ของโปรเจกต์ของเรา:
ชื่อไฟล์: Cargo.toml
[profile.dev]
opt-level = 1
โค้ดนี้จะเขียนทับการตั้งค่าเริ่มต้นที่เป็น 0 ตอนนี้เมื่อเรารัน cargo build Cargo จะใช้ค่าเริ่มต้นสำหรับโปรไฟล์ dev บวกกับการปรับแต่ง opt-level ของเรา เนื่องจากเราตั้งค่า opt-level เป็น 1 Cargo จึงจะใช้นวัตกรรมการปรับปรุงประสิทธิภาพมากกว่าค่าเริ่มต้น แต่จะไม่มากเท่ากับในโหมดบิลด์รีลีส
สำหรับรายการตัวเลือกการตั้งค่าทั้งหมดและค่าเริ่มต้นสำหรับแต่ละโปรไฟล์ โปรดดูที่ เอกสารของ Cargo