सिस्टम प्रोग्रामिंग क्लास में मैंने यह पिछले सेमेस्टर में लिया था, हमें सी में एक बुनियादी क्लाइंट / सर्वर को लागू करना था। जब पैटर्न, जैसे 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अप्रचलित है, और इसका उपयोग न करने के लिए पर्याप्त कारण है।