9
ทำไมต้องใช้ bzero มากกว่า memset?
ในคลาสการเขียนโปรแกรมระบบที่ฉันเอาภาคการศึกษาก่อนหน้านี้เราต้องใช้ไคลเอนต์ / เซิร์ฟเวอร์ขั้นพื้นฐานในซีเมื่อเริ่มต้น structs เช่นsock_addr_inหรือบัฟเฟอร์บัฟเฟอร์ (ที่เราใช้ในการส่งข้อมูลไปมาระหว่างไคลเอนต์และเซิร์ฟเวอร์) อาจารย์ สั่งให้เราใช้เท่านั้นbzeroและไม่memsetเริ่มต้นพวกเขา เขาไม่เคยอธิบายว่าทำไมและฉันอยากรู้ว่ามีเหตุผลที่ถูกต้องสำหรับสิ่งนี้หรือไม่? ฉันดูที่นี่: http://fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdownที่bzeroมีประสิทธิภาพมากขึ้นเนื่องจากความจริงที่ว่าจะเป็นศูนย์ความจำเท่านั้นดังนั้นมันจึงไม่ ต้องทำการตรวจสอบเพิ่มเติมใด ๆ ที่memsetอาจทำ ที่ยังคงไม่จำเป็นต้องดูเหมือนเหตุผลที่จะไม่ใช้อย่างแน่นอนmemsetสำหรับหน่วยความจำ zeroing bzeroถือว่าเลิกใช้แล้วและไม่ใช่ฟังก์ชัน C มาตรฐาน ตามคู่มือmemsetเป็นที่ต้องการมากกว่าbzeroด้วยเหตุผลนี้ ดังนั้นทำไมคุณยังต้องการใช้bzeroมากกว่าmemset? เพื่อประสิทธิภาพที่เพิ่มขึ้นหรือเป็นอะไรที่มากกว่านี้หรือ ในทำนองเดียวกันสิ่งที่มีประโยชน์memsetมากกว่าbzeroที่ทำให้มันเป็นตัวเลือกที่ต้องการโดยพฤตินัยสำหรับโปรแกรมที่ใหม่กว่า?