वास्तव में, इससे कोई फर्क नहीं पड़ता।
निश्चित रूप से, यदि आप वास्तव में छोटे बफर का उपयोग करते हैं, तो आपको बाइट्स प्राप्त करने के लिए परतों के माध्यम से कुछ अतिरिक्त कॉल करना पड़ सकता है (हालांकि धारा कम से कम कुछ बफरिंग कर रही है - मुझे नहीं पता कि यह क्या है डिफ़ॉल्ट हैं)। और निश्चित रूप से, यदि आप वास्तव में बड़े बफर का उपयोग करते हैं, तो आप कुछ स्मृति बर्बाद कर देंगे और कुछ विखंडन शुरू करेंगे। चूंकि आप स्पष्ट रूप से आईओ कर रहे हैं, जब भी आप बफर को ट्वीव करके लाभ प्राप्त करते हैं, तो आईओ समय पर प्रभुत्व हो रहा है।
एक सामान्य नियम के रूप में, मैं 2048 (2k) और 8192 (8k) के बीच दो की शक्ति के साथ जाता हूं। बस सुनिश्चित करें कि आप जानते हैं कि आप क्या कर रहे हैं यदि आप 85,000 बाइट्स के बराबर या उससे अधिक बफर के साथ जाते हैं (यह तब "large object" and subject to different GC rules है)।
वास्तव में, बफर आकार से अधिक महत्वपूर्ण यह है कि आप इसे कब तक रखते हैं। बड़ी वस्तु ढेर के बाहर वस्तुओं के लिए, जीसी बहुत कम जीवित वस्तुओं से निपटने में बहुत अच्छा है (जनरल 0 संग्रह तेजी से हैं), या बहुत लंबे समय तक जीवित वस्तुओं (जनरल 2)। ऑब्जेक्ट जो लाल होने से पहले जनरल 1 या 2 तक पहुंचने के लिए पर्याप्त समय तक जीवित रहते हैं, तुलनात्मक रूप से अधिक महंगा होते हैं, और आम तौर पर बफर कितना बड़ा होता है, इस बारे में चिंता करने के लिए आपके समय के बराबर अधिक मूल्यवान होता है।
एक अंतिम नोट: यदि आपको लगता है कि आपके द्वारा उपयोग किए जा रहे बफर के आकार के कारण आपके पास प्रदर्शन समस्या है, तो परीक्षण। यह असंभव है, लेकिन कौन जानता है, हो सकता है कि आपके पास ओएस संस्करण, नेटवर्क हार्डवेयर और ड्राइवर रिलीज का एक अजीब संगम हो, जिसमें कुछ आकार के बफर के साथ कुछ अजीब समस्या है।
स्रोत
2009-04-23 04:44:54
बहुत उपयोगी पोस्ट, लेकिन मुझे लगता है कि आपका मतलब 8192 था? 2 की शक्ति -> 2048, 40 9 6, 8192 (8 के)। – Derrick