मेरे पास एक ऐसा तरीका है जो एक फ़ाइल से एक संदेशडॉगस्ट (एक हैश) बनाता है, और मुझे बहुत सारी फ़ाइलों (> = 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();
थ्रूपुट को अधिकतम करने के लिए बफर का आदर्श आकार क्या है? मुझे पता है कि यह सिस्टम पर निर्भर है, और मुझे पूरा यकीन है कि इसका ओएस, फाइलसिस्टम और एचडीडी निर्भर है, और शायद मिश्रण में अन्य हार्डवेयर / सॉफ्टवेयर भी हैं।
(मुझे यह बताना चाहिए कि मैं जावा में कुछ नया हूं, इसलिए यह सिर्फ कुछ जावा एपीआई कॉल हो सकता है जिनके बारे में मुझे नहीं पता है।)
संपादित करें: मैं समय से पहले नहीं जानता कि किस प्रकार के सिस्टम का उपयोग किया जाएगा, इसलिए मैं पूरी तरह से ग्रहण नहीं कर सकता। (मैं उस कारण से जावा का उपयोग कर रहा हूं।)
संपादित करें: ऊपर दिया गया कोड चीजों को याद कर रहा है जैसे कि पोस्ट को छोटा करने के लिए प्रयास करें