Dalam kelas Pemrograman Sistem yang saya ambil semester sebelumnya ini, kami harus mengimplementasikan klien dasar / server di C. Ketika menginisialisasi struct, seperti sock_addr_in, atau buffer char (yang kami gunakan untuk mengirim data bolak-balik antara klien dan server) profesor menginstruksikan kami untuk hanya menggunakan bzerodan tidak memsetmenginisialisasi mereka. Dia tidak pernah menjelaskan mengapa, dan saya ingin tahu apakah ada alasan yang sah untuk ini?
Saya melihat di sini: http://fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdown yang bzerolebih efisien karena fakta bahwa hanya akan menjadi memori zeroing, jadi tidak harus melakukan pengecekan tambahan yang memsetmungkin dilakukan. Itu masih belum tentu tampak seperti alasan untuk sama sekali tidak menggunakan memsetuntuk mem-zero-up memori.
bzerodianggap usang, dan lebih jauh lagi bukan fungsi standar C. Menurut manual, memsetlebih disukai daripada bzerokarena alasan ini. Jadi, mengapa Anda ingin tetap menggunakan bzerolebih memset? Hanya untuk keuntungan efisiensi, atau itu sesuatu yang lebih? Demikian juga, apa manfaat dari memsetkelebihan bzeroyang menjadikannya pilihan yang dipilih secara de facto untuk program yang lebih baru?
memsetmungkin sedikit kurang efisien karena "sedikit lebih banyak pengecekan" jelas merupakan kasus optimasi prematur: apa pun keuntungan yang mungkin Anda lihat dari menghilangkan satu atau dua instruksi CPU tidak sepadan ketika Anda dapat membahayakan portabilitas Anda. kode. bzerosudah usang, dan itu cukup alasan untuk tidak menggunakannya.