2012-10-24 12 views
14

मेरा एंड्रॉइड एप्लिकेशन बड़ी और बहुत बड़ी फाइलों का उपयोग करेगा (यानी 10 एमबी और 2 जीबी के आकार के बीच)।स्मार्टफोन पर फ़ाइल पढ़ने का प्रदर्शन: आंतरिक भंडारण बनाम एसडी कार्ड बनाम पीसी हार्ड डिस्क

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

  1. क्या प्रमुख मतभेद है कि मैं जब (एक Android 2.2 फ़ोन पर जैसे।) एक "आधुनिक" स्मार्टफोन पर बड़ी फ़ाइलों को पढ़ने को ध्यान में रखना चाहिए, एक ही बात कर रही है की तुलना में कर रहे हैं एक पीसी के लिए एक जावा अनुप्रयोग के साथ? (प्रदर्शन की मांग/पढ़ने के डिस्क के संदर्भ में; जाहिर है, सेलफोन रैम एक पीसी से छोटा है, इसलिए इसे बफर आदि के मामले में ध्यान में रखा जाना चाहिए)
  2. स्थिर भंडारण के बीच (प्रासंगिक) प्रमुख अंतर क्या हैं पीसी हार्ड डिस्क की तुलना में हार्डवेयर में इस्तेमाल हार्डवेयर? (मुझे पता है कि यह एक बहुत ही व्यापक सवाल है, इसलिए मैं यहां एक बहुत ही संक्षिप्त उत्तर और संभवतः कुछ विश्वसनीय बाहरी यूआरएल की सराहना करता हूं)
  3. InputStream पढ़ने और मांगने (स्किपबाइट्स) के मामले में, क्या कोई अंतर है (उदाहरण के लिए एंड्रॉइड पर) आंतरिक भंडारण और एसडी कार्ड का उपयोग करने के बीच (मैंने जानबूझकर "बाहरी भंडारण" नहीं लिखा था, क्योंकि यह आवश्यक नहीं है कि प्रत्येक डिवाइस पर एसडी कार्ड)? क्या एसडी कार्ड धीमा है?
  4. उदाहरण के लिए, मैं 2 जीबी फ़ाइल से 2 एमबी डेटा पढ़ना चाहता हूं, और यह 2 एमबी डेटा फ़ाइल के कई अलग/दूर हिस्सों में वितरित किया जाता है। सभी ऑफ़सेट ज्ञात हैं, इसलिए मैं ऑफ़सेट के आरोही क्रम का निर्माण करता हूं और फिर उन्हें पढ़ने के लिए BufferedInputStream.read() (उदा। DataInputStream में) का उपयोग करने के लिए उपयोग करता हूं (और जहां भी आवश्यक हो वहां skipBytes() का उपयोग करके)। इसलिए, अंतर्निहित फ़ाइल सिस्टम में, इसे पूरे 2 जीबी फ़ाइल "जाने" की आवश्यकता हो सकती है। (उदा। एंड्रॉइड आवश्यक होने पर फ़ाइल में खोजने के लिए लिनक्स फ़ंक्शंस का उपयोग करता है।) हालांकि, पीसी हार्ड डिस्क में जितना कुशल है? तलाश दक्षता के मामले में एसडी कार्ड बनाम आंतरिक भंडारण के बारे में क्या?
  5. विशिष्ट डेटा पढ़ने की गति क्या होती है? (स्मार्टफोन आंतरिक स्टोरेज बनाम एसडी कार्ड बनाम पीसी गैर-एसएसडी हार्ड डिस्क)

मुझे पता है कि मेरे ठोस आवेदन के लिए बेंचमार्किंग एक जरूरी है, लेकिन मैं इस मामले में सैद्धांतिक स्पष्टीकरण का भी स्वागत करता हूं।

महत्वपूर्ण: "... एक पीसी हार्ड डिस्क के रूप में के रूप में कुशल मांग कर रहा है" जब मैं चाहते हैं कि, मैं नहीं (केवल) पूर्ण मान मतलब लेकिन यह भी तंत्र इसके बारे में है। यही है, अगर यह एक ही तार्किक सिद्धांतों (= जब भी संभव हो तो बड़े हिस्सों को छोड़कर) पर आधारित होता है, या कुछ कमियां होती हैं (उदाहरण के लिए एसडी कार्ड पर "स्किपिंग-आधारित" मांग संभव नहीं है, और इस प्रकार छोड़ना बहुत अधिक है - - यानी गैर-आनुपातिक रूप से - पीसी हार्ड डिस्क की तुलना में स्मार्टफ़ोन हार्डवेयर पर बेकार)।

+2

'सामान्य डेटा पढ़ने की गति क्या होती है?' यह प्रत्येक सिस्टम/डिवाइस पर भिन्न होता है क्योंकि यह प्रोसेसर और चिप सेट से जुड़ा होता है। ऐसे मामले में एक आधुनिक स्मार्ट फोन एक सेलेरॉन प्रोसेसर कंप्यूटर से तेज हो सकता है, इसी प्रकार – Lucifer

+1

क्लॉस विलाका के जवाब में "मांग हमेशा धीमा कार्य" है, मुझे असहमत होना चाहिए। यह आम तौर पर सच नहीं है; जैसे एक एसडी कार्ड पर मैंने जो सुना, उसके आधार पर, यह हार्ड डिस्क (एसडी कार्ड के हार्डवेयर की प्रकृति के कारण) से ** तेज ** हो सकता है। अर्थात। एक पीसी हार्ड डिस्क से एक यादृच्छिक स्थिति चुनना तेज हो सकता है। –

उत्तर

2

अपने प्रश्नों का उत्तर देने का प्रयास

  1. केवल एक ही अंतर है, कि अगर आपकी फ़ाइलें, क्योंकि आप एक अलग विधि का उपयोग कर इसे खोलने के लिए की जरूरत एप्लिकेशन पैकेज (अनुप्रयोग के भीतर) में कर रहे हैं, हालांकि अगर यह एप्लिकेशन पैकेज के अंदर और में है पैकेज/फ़ाइल/ आप एक ही फ़ाइल फ़ाइल bla का उपयोग कर सकते हैं ..।

  2. स्मार्टफोन आंतरिक मेमोरी एचडीडी की तुलना में तेज़ है, हालांकि अगर आप इसे बाहरी एसडीकार्ड में स्टोर करते हैं, तो यह बदलेगा कि एसडी कार्ड के पास पढ़ने और लिखने के लिए अधिकतम गति है।

  3. हां अंतर है ... यदि आंतरिक या एसडीकार्ड (बाहरी एसडी कार्ड नहीं) से पढ़ना है, तो अन्यथा हमारे पास स्टोरेज के लिए 1 या 2 जीबी और 16 जीबी के साथ डिवाइस नहीं होना चाहिए। वह सब कुछ जो कि मुख्य स्मृति में है वह तेजी से दौड़ जाएगा।

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

  5. आपको इसके लिए एक ऐप की आवश्यकता होगी या खुद को लिखना होगा, यह बहुत मुश्किल नहीं होना चाहिए, आप हैंडलर का उपयोग कर सकते हैं, और जितना हो सके उतना लोड कर सकते हैं, और बाइट्स को गिन सकते हैं, और दोहराना यह अन्य मेमोरी प्रकारों (आंतरिक एसडी कार्ड और बाहरी एसडीकार्ड) पर है।

+1

आपके उत्तर के लिए धन्यवाद। प्रश्न # 4 के बारे में: असल में, यह मेरा सबसे महत्वपूर्ण सवाल है, और मेरा मतलब यह है कि आप इसे कैसे पहुंचे उससे अलग पहलू से। (मेरा सॉफ़्टवेयर घटक एक अलग थ्रेड में चलता है, इसलिए प्रतिक्रिया मेरे लिए कोई मुद्दा नहीं है।) मैं वास्तव में सोच रहा था कि "तलाश" एक पीसी हार्ड डिस्क पर जितना कुशल है। दूसरे शब्दों में, 2 एमबी पढ़ना एक बड़ा सौदा नहीं है, इसलिए सवाल यह है कि यदि मांग स्वयं कुशल है या नहीं। क्योंकि हम 2 जीबी फ़ाइल से 2 एमबी पढ़ते हैं। यदि मांग कुशल नहीं है, तो एक अलग 2 एमबी फ़ाइल पढ़ने से ज्यादा समय लगेगा। पीसी पर, मांग कुशल है। –

+0

मुझे कथन से असहमत होना है "" खोज हमेशा धीमा कार्य होता है "। यह आम तौर पर सच नहीं है; उदा।एसडी कार्ड पर मैंने जो सुना, उसके आधार पर, यह हार्ड डिस्क (एसडी कार्ड के हार्डवेयर की प्रकृति के कारण) से भी तेज हो सकता है। अर्थात। एक यादृच्छिक स्थिति से पढ़ना एक पीसी हार्ड डिस्क से तेज हो सकता है। –

1

आपका प्रश्न बहुत विशिष्ट है और बहुत अधिक डेटा मांगते हैं :-) मुझे लगता है कि आपके साथ एक और व्यक्ति को बहुत विशिष्ट आवश्यकताओं को ढूंढना मुश्किल होगा।

सामान्य रूप से, एसडी कार्ड डेटा एक्सेस की गति न केवल ड्राइवर हार्डवेयर (डिवाइस) पर निर्भर करता है बल्कि कार्ड में और सॉफ़वेयर (एंड्रॉइड संस्करण) तक पहुंचने पर निर्भर करता है।

दूसरी ओर आप एसडी कार्ड के बारे में कुछ जानकारी प्राप्त कर सकते में गति:

यहां तक ​​कि गूगल पर

खेलते हैं आप की गति का परीक्षण करने के लिए कुछ ऐप्स ढूंढ सकते हैं आपके डिवाइस पर एक एसडी कार्ड (एसडी कार्ड परीक्षक, एसडी टूल्स, आदि के लिए खोजें)

+0

धन्यवाद, इससे भी बहुत मदद मिली (लिंक सहित)। सवाल वास्तव में विशिष्ट नहीं है, लेकिन मैं सहमत हूं कि यह अधिक डेटा मांगता है। स्टैक ओवरफ्लो ऑनलाइन "लेक्सिकॉन" का एक प्रकार भी है, इसलिए मुझे लगता है कि यह ठीक है। :-) –

संबंधित मुद्दे