ใด ๆ ที่คุ้มค่าคอมไพเลอร์ของเกลือจะสร้างตรงลำดับเครื่องภาษาเดียวกันสำหรับโครงสร้างทั้งสำหรับการใด ๆ ในตัวชนิด ( int, floatฯลฯ ) ตราบใดที่คำสั่งมันเป็นง่ายๆเป็นและการเพิ่มประสิทธิภาพถูกเปิดใช้งานx = x + a; (โดยเฉพาะอย่างยิ่ง GCC -O0ซึ่งเป็นโหมดเริ่มต้นจะทำการป้องกันการเพิ่มประสิทธิภาพเช่นการแทรกร้านค้าที่ไม่จำเป็นทั้งหมดลงในหน่วยความจำเพื่อให้แน่ใจว่าผู้ดีบั๊กสามารถค้นหาค่าตัวแปรได้ตลอดเวลา)
หากคำสั่งมีความซับซ้อนมากขึ้นอาจแตกต่างกัน สมมติว่าfเป็นฟังก์ชันที่ส่งกลับตัวชี้แล้ว
*f() += a;
โทรfเพียงครั้งเดียวในขณะที่
*f() = *f() + a;
เรียกมันสองครั้ง หากfมีผลข้างเคียงหนึ่งในสองข้อจะผิด (อาจเป็นอย่างหลัง) แม้ว่าfจะไม่มีผลข้างเคียง แต่คอมไพเลอร์อาจไม่สามารถกำจัดการเรียกครั้งที่สองได้ดังนั้นการเรียกครั้งหลังอาจช้าลง
และเนื่องจากเรากำลังพูดถึง C ++ ที่นี่สถานการณ์จึงแตกต่างกันอย่างสิ้นเชิงสำหรับประเภทคลาสที่โอเวอร์โหลดoperator+และoperator+=. หากxเป็นประเภทดังกล่าว - ก่อนการปรับให้เหมาะสม - x += aแปลเป็น
x.operator+=(a);
ในขณะที่x = x + aแปลเป็น
auto TEMP(x.operator+(a));
x.operator=(TEMP);
ตอนนี้ถ้าคลาสได้รับการเขียนอย่างถูกต้องและเครื่องมือเพิ่มประสิทธิภาพของคอมไพเลอร์ดีพอทั้งคู่จะสร้างภาษาเครื่องเดียวกัน แต่ก็ไม่แน่ใจเหมือนกันสำหรับประเภทในตัว นี่อาจจะเป็นสิ่งที่ Stroustrup +=เป็นความคิดของเขาเมื่อเขาส่งเสริมการใช้