ขนาดบัฟเฟอร์ใดที่ฉันควรเลือกสำหรับอ่าน / เขียนไฟล์ผ่านฟังก์ชั่น POSIX fread / fwrite
read
/ write
ฟังก์ชั่นหรือ ANSI / ISO / IEC fread
/ fwrite
ฟังก์ชั่น?
ขนาดบัฟเฟอร์ใดที่ฉันควรเลือกสำหรับอ่าน / เขียนไฟล์ผ่านฟังก์ชั่น POSIX fread / fwrite
read
/ write
ฟังก์ชั่นหรือ ANSI / ISO / IEC fread
/ fwrite
ฟังก์ชั่น?
คำตอบ:
ฟังก์ชัน ANSI / ISO fread/fwrite
ถูกบัฟเฟอร์ บัฟเฟอร์มักจะเป็น 8 KiB และให้ความละเอียดเป็นอิสระจากสิ่งที่คุณใช้ในรหัสของคุณ มันอาจจะเหมาะสมที่จะเพิ่มบัฟเฟอร์สักหน่อยหรืออาจจะเพิ่มตามค่าด้านล่าง สำหรับการถ่ายโอนจำนวนมากพวกเขาจะช้าลงเล็กน้อยเนื่องจากการทำสำเนาเพิ่มเติม
สำหรับread/write
ฟังก์ชั่นPOSIX นั้นขึ้นอยู่กับระบบปฏิบัติการและอุปกรณ์และอื่น ๆ อีกมากมาย แต่ประสบการณ์จริงคือคุณไม่ได้รับการปรับปรุงประสิทธิภาพโดยการเพิ่มบัฟเฟอร์เกินกว่าสิบเท่าของ KiB ดังนั้น 32 หรือ 64 KiB จึงเหมาะสม
ในบางระบบการพึ่งพามีขนาดใหญ่กว่าในบางระบบ บน Linux ความแตกต่างมักจะน้อยกว่า 8 KiB (ดังนั้นบัฟเฟอร์เริ่มต้นจึงใช้ได้) เช่นบน Windows CE (โดยใช้ Native API ซึ่งไม่มี POSIX) ยิ่งใหญ่กว่า 64 KiB ก็ยังช่วยได้ มันอาจขึ้นอยู่กับอุปกรณ์
fread
, fwrite
) และ 32 / 64K สำหรับ Unbuffered? หากมีการส่งข้อมูลภาพเหตุผลใดที่จะเลือกบัฟเฟอร์หรือไม่บัฟเฟอร์?