POSIX fread / fwrite फ़ंक्शन के माध्यम से फ़ाइलों को पढ़ने / लिखने के लिए मुझे किस बफर आकार का चयन करना चाहिए?
grep
, cp
)
read
/ write
फ़ंक्शन या ANSI / ISO / IEC fread
/ fwrite
फ़ंक्शन?
POSIX fread / fwrite फ़ंक्शन के माध्यम से फ़ाइलों को पढ़ने / लिखने के लिए मुझे किस बफर आकार का चयन करना चाहिए?
grep
, cp
)
read
/ write
फ़ंक्शन या ANSI / ISO / IEC fread
/ fwrite
फ़ंक्शन?
जवाबों:
ANSI / ISO fread/fwrite
फ़ंक्शंस बफ़र्ड हैं। बफ़र आमतौर पर 8 KiB होता है और इससे ग्रैन्युलैरिटी से स्वतंत्र हो जाता है जो आप अपने कोड में उपयोग करते हैं। यह बफर को थोड़ा बढ़ाने के लिए समझ में आ सकता है, शायद नीचे के मूल्य पर। बल्क ट्रांसफर के लिए वे हमेशा एक छोटे से धीमे होंगे हालांकि अतिरिक्त प्रतियों के कारण।
POSIX read/write
फ़ंक्शंस के लिए यह ऑपरेटिंग सिस्टम और डिवाइस और बहुत सी अन्य चीज़ों पर निर्भर करता है, लेकिन व्यावहारिक अनुभव यह है कि आप KiB के दसियों से आगे बफ़र बढ़ाकर कोई प्रदर्शन सुधार प्राप्त नहीं करते हैं, इसलिए 32 या 64 KiB सही है।
कुछ प्रणालियों पर निर्भरता दूसरों की तुलना में बड़ी है। लिनक्स पर अंतर आमतौर पर 8 KiB से ऊपर न्यूनतम होता है (इसलिए डिफ़ॉल्ट बफर ठीक है), उदाहरण के लिए Windows CE (देशी एपीआई का उपयोग करके; उनके पास POSIX नहीं है) 64 KiB से भी बड़ी मदद अभी भी है। यह डिवाइस पर भी निर्भर हो सकता है।
fread
, fwrite
) और 32 / 64K के लिए अनफ़िल्टर्ड? यदि छवि डेटा भेजना है तो क्या कोई विशिष्ट औचित्य है कि वह बफर या असंबद्ध का चयन करे?