2010-09-09 13 views
9

क्या बड़ी फ़ाइलों को संसाधित करने के लिए इष्टतम खंड आकार जैसी कोई चीज है? मेरे पास एक अपलोड सेवा (डब्ल्यूसीएफ) है जिसका उपयोग कई सौ मेगाबाइट्स से फ़ाइल अपलोड स्वीकार करने के लिए किया जाता है।बड़ी फ़ाइलों को अपलोड करने के लिए इष्टतम खंड आकार की गणना कैसे करें

मैंने 4 केबी, 8 केबी से 1 एमबी खंड आकार के साथ प्रयोग किया है। बड़ा हिस्सा आकार प्रदर्शन (तेज़ प्रसंस्करण) के लिए अच्छा है लेकिन यह स्मृति की लागत पर आता है।

तो, फ़ाइलों को अपलोड करने के समय इष्टतम खंड आकार को काम करने का कोई तरीका है। ऐसी गणना करने के बारे में कोई कैसे होगा? क्या यह उपलब्ध स्मृति और क्लाइंट, सीपीयू और नेटवर्क बैंडविड्थ का संयोजन होगा जो इष्टतम आकार निर्धारित करता है?

चीयर्स

संपादित करें: शायद उल्लेख करना चाहिए कि ग्राहक एप्लिकेशन Silverlight में होगा।

उत्तर

6

यदि आप संसाधनों से बाहर निकलने के बारे में चिंतित हैं, तो इष्टतम शायद आपके सिस्टम की उपलब्ध स्मृति के विरुद्ध आपके चरम अपलोड समेकन का मूल्यांकन करके सबसे अच्छा निर्धारित किया जाता है। एक समय में आपके साथ कितने एक साथ अपलोड हो रहे हैं, आप जो भी गणना कर सकते हैं उसमें महत्वपूर्ण महत्वपूर्ण चर होगा। आपको बस इतना करना है कि अपलोड समेकन को संभालने के लिए आपके पास पर्याप्त स्मृति है, और यह हासिल करने के लिए अपेक्षाकृत छोटा है। मेमोरी सस्ता है और आप उस बिंदु तक पहुंचने से पहले नेटवर्क बैंडविड्थ से बाहर निकल जाएंगे जहां आपकी सहमति आपकी स्मृति उपलब्धता को खत्म कर देगी।

प्रदर्शन पक्ष पर, यह ऐसी चीज नहीं है जिसे आप वास्तव में ऐप डिज़ाइन और विकास के दौरान अनुकूलित कर सकते हैं। आपको सिस्टम को जगह में रखना होगा, उपयोगकर्ता वास्तविक फ़ाइलों को अपलोड कर रहे हैं, और फिर आप वास्तविक रनटाइम प्रदर्शन की निगरानी कर सकते हैं।

अपने नेटवर्क के टीसीपी/आईपी विंडो आकार से मेल खाने वाले एक खंड आकार का प्रयास करें। यह उतना ही इष्टतम है जितना कि आपको वास्तव में डिज़ाइन समय पर जाना होगा।

+1

अच्छी तरह से मैं क्लाइंट मशीनों का अधिक जिक्र कर रहा था (जिसका हमारे पास कोई नियंत्रण नहीं है)। अगर मैं 1 एमबी कहने के लिए खंड आकार सेट करता हूं तो यह क्लाइंट मशीन पर सभी मेमोरी खाएगा। लेकिन अगर मैं इसे कम करने के लिए सेट करता हूं तो इसे संसाधित करने में काफी समय लगेगा। – Fixer

+3

ओह! एक ग्राहक मशीन के साथ, यह बहुत आसान है। Concurrency लगभग मौजूद नहीं है। जब तक आप उन्हें प्राप्त करने के बाद स्मृति में बिट्स को नहीं रखते हैं, तब तक आप जो भी हिस्सा चाहते हैं उसका उपयोग कर सकते हैं। किसी भी आधुनिक ग्राहक, यहां तक ​​कि एक फोन में, कुछ फाइलों से निपटने के लिए पर्याप्त सीपीयू और मेमोरी है जब तक कि आप प्रत्येक खंड के बाद स्टोरेज में बिट्स स्ट्रीम कर रहे हों। मुझे संदेह है कि आप केवल आकार के आधार पर आवेदन स्तर पर प्रदर्शन में कोई महत्वपूर्ण अंतर देखेंगे। मैं बड़ी फाइलों के लिए 1024 केबी के साथ जाऊंगा और इसे एक दिन बुलाऊंगा। –