ฉันมีวิธีที่สร้าง MessageDigest (แฮช) จากไฟล์และฉันต้องทำสิ่งนี้กับไฟล์จำนวนมาก (> = 100,000) ฉันควรทำให้บัฟเฟอร์ที่ใช้อ่านจากไฟล์มีขนาดใหญ่เพียงใดเพื่อเพิ่มประสิทธิภาพ
ทุกคนส่วนใหญ่คุ้นเคยกับรหัสพื้นฐาน (ซึ่งฉันจะทำซ้ำที่นี่ในกรณี):
MessageDigest md = MessageDigest.getInstance( "SHA" );
FileInputStream ios = new FileInputStream( "myfile.bmp" );
byte[] buffer = new byte[4 * 1024]; // what should this value be?
int read = 0;
while( ( read = ios.read( buffer ) ) > 0 )
md.update( buffer, 0, read );
ios.close();
md.digest();
ขนาดที่เหมาะสมของบัฟเฟอร์เพื่อเพิ่มปริมาณงานคือเท่าไร ฉันรู้ว่ามันขึ้นอยู่กับระบบและฉันค่อนข้างแน่ใจว่าระบบปฏิบัติการ, FileSystem และ HDD ขึ้นอยู่กับว่าและอาจมีฮาร์ดแวร์ / ซอฟต์แวร์อื่น ๆ ผสม
(ฉันควรชี้ให้เห็นว่าฉันค่อนข้างใหม่กับ Java ดังนั้นนี่อาจเป็นการเรียก Java API บางอย่างที่ฉันไม่รู้)
แก้ไข:ฉันไม่ทราบล่วงหน้าว่าจะใช้ระบบประเภทใดดังนั้นฉันจึงไม่สามารถคาดเดาได้ทั้งหมด (ฉันใช้ Java ด้วยเหตุผลนั้น)
แก้ไข:โค้ดด้านบนขาดสิ่งต่าง ๆ เช่นลอง .. จับเพื่อทำให้โพสต์เล็กลง