Bir Sistem Programlama dersinde bu önceki dönemi aldım, C'de temel bir istemci / sunucu uygulamak zorunda kaldık sock_addr_in
. Profesör ya da char arabellekleri (istemci ve sunucu arasında ileri ve geri veri gönderirken kullandığımız) profesörü bize sadece onları kullanmamızı bzero
ve memset
başlatmamamızı emretti . Nedenini hiç açıklamadı ve bunun geçerli bir nedeni olup olmadığını merak ediyorum?
Ben buraya bakın: http://fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdown o bzero
nedeniyle sadece hiç bellek sıfırlama olacak gerçeğine daha verimlidir, öyle değil bu yüzden ek kontroller memset
yapmak zorunda. Yine de, memset
belleği sıfırlamak için kesinlikle kullanmamak için bir neden gibi görünmüyor .
bzero
kullanımdan kaldırılmıştır ve ayrıca standart bir C işlevi değildir. El kitabına göre, bu nedenle memset
tercih edilir bzero
. Peki neden hala kullanmak isteyeyim bzero
üzerinde memset
? Sadece verimlilik artışı için mi yoksa daha fazlası mı? Aynı şekilde, faydaları nelerdir memset
üzerinde bzero
o yeni programlar için fiili tercih edilen seçenek yapmak?
memset
"Biraz daha fazla kontrol etme" nedeniyle biraz daha az verimli olabilecek fikir kesinlikle erken bir optimizasyon örneğidir: Bir CPU talimatını atlamaktan ne kadar kazanç elde ederseniz edin, taşınabilirliğinizi tehlikeye atabildiğinizde buna değmez. kodu. bzero
kullanılmıyor ve onu kullanmamak için yeterli sebep bu.