सिस्टम प्रोग्रामिंग क्लास में मैंने यह पिछले सेमेस्टर में लिया था, हमें सी में एक बुनियादी क्लाइंट / सर्वर को लागू करना था। जब पैटर्न, जैसे sock_addr_in
, या चार बफ़र्स को आरम्भ करना (जो हम क्लाइंट और सर्वर के बीच डेटा आगे और पीछे भेजते थे) प्रोफेसर हमें केवल उपयोग करने के लिए निर्देश दिया bzero
और memset
उन्हें आरंभ करने के लिए नहीं । उन्होंने कभी यह नहीं बताया कि क्यों, और मुझे इस बात का कोई कारण है कि मैं उत्सुक हूं?
मैं यहाँ देखता हूँ: http://fdiv.net/2009/01/01/14/memset-vs-bzero-ultimate-showdown जो bzero
केवल शून्य मेमोरी होने जा रहा है, इस तथ्य के कारण अधिक कुशल है, इसलिए यह नहीं करता है कोई अतिरिक्त जाँच करनी होगी जो memset
कर सकते हैं। यह अभी भी जरूरी नहीं है कि बिल्कुल memset
शून्य स्मृति के लिए उपयोग नहीं करने के लिए एक कारण की तरह लगता है ।
bzero
माना जाता है कि पदावनत, और इसके अलावा एक मानक सी फ़ंक्शन नहीं है। मैनुअल के अनुसार, इस कारण memset
से अधिक पसंद किया जाता है bzero
। तो क्यों आप अभी भी उपयोग करना चाहते bzero
हैं memset
? सिर्फ दक्षता हासिल करने के लिए, या यह कुछ और है? इसी तरह, इससे memset
अधिक लाभ क्या हैं bzero
कि यह नए कार्यक्रमों के लिए वास्तव में पसंदीदा विकल्प है?
memset
"थोड़ा और अधिक जाँच के कारण थोड़ा कम कुशल हो सकता है" निश्चित रूप से समय से पहले अनुकूलन का मामला है: जो कुछ भी लाभ आप सीपीयू निर्देश को छोड़ने से देख सकते हैं या दो इसके लायक नहीं हैं जब आप अपने पोर्टेबिलिटी को खतरे में डाल सकते हैं कोड। bzero
अप्रचलित है, और इसका उपयोग न करने के लिए पर्याप्त कारण है।