शान्ति के लिए बड़ी फाइलें छोटी फाइलों से बेहतर क्यों हैं?


18

कंसोल गेम डेवलपर्स पीसी पर छोटी फ़ाइलों के बजाय गेम डेटा को स्टोर करने के लिए बड़ी फ़ाइलों का उपयोग क्यों करते हैं? स्मृति में कम धाराएँ? कई बार फ़ाइल पेड़ तक पहुंचने की आवश्यकता है? दूसरा कारण?


शायद वेब दुनिया में एक एनालॉग: सीएसएस स्प्राइट्स
निक टी

CSS स्प्राइट्स अभी भी पुराने रस्टी HTTP 1.1 का उपयोग करने के लिए एक बुरा पहलू है जो स्पष्ट रूप से एक ही कनेक्शन के साथ कई संसाधनों को भेजने में असमर्थ सर्वर बनाता है। मैं एक नए मानक की कामना करता हूं।
कोस

1
@Kos आपकी इच्छा दी गई है , हालांकि दुर्भाग्य से अभी तक लागू नहीं हुई है।
फ़िहग

इसके लिए धन्यवाद! मैं उन्हें एक केक बेक करना चाहता हूं ताकि वे तेजी से काम करें।
कोस

जवाबों:


37

प्लेटफ़ॉर्म की परवाह किए बिना, एक बड़ी फ़ाइल के प्रदर्शन के लिए कुछ लाभ हैं। कई पीसी गेम बड़ी फ़ाइलों का भी उपयोग करते हैं।

  • आप बड़ी फ़ाइल के भीतर प्रत्येक फ़ाइल के ऑफ़सेट को मैन्युअल रूप से कैश कर सकते हैं, फ़ाइल सिस्टम डायरेक्टरी प्रविष्टियों को पढ़ने की आवश्यकता से बचने के लिए (जिसमें यदि आप कैश को याद करते हैं तो प्रत्येक फ़ाइल को एक से अधिक साइक्स शामिल कर सकते हैं)।

  • आपको फ़ाइल के भीतर डेटा के आदेश का पूरा नियंत्रण मिलता है, इसलिए आप इसे धीमी गति की आवश्यकता को कम करने के लिए व्यवस्थित कर सकते हैं।

  • व्यक्तिगत फ़ाइलों की तुलना में डेटा संपीड़न आमतौर पर एक बड़ी फ़ाइल पर अधिक प्रभावी होता है।

ध्यान दें कि लोड समय को तेज करने के लिए कांटे से बचना बहुत प्रभावी है। एक विशिष्ट हार्ड ड्राइव में 10ms का समय और 100MB / s अंतरण दर हो सकती है। मान लें कि आपको 1 एमबी के कुल आकार के साथ 100 shader फाइलें लोड करने की आवश्यकता है। यदि आपको प्रत्येक के लिए एक खोज करनी है तो उन सभी को लोड करने में एक सेकंड लगेगा। एक ही तलाश के साथ आप सभी को लोड करने के लिए 20ms देख रहे हैं।

बेशक सभी कंसोल्स में हार्ड ड्राइव नहीं होती है, और ऑप्टिकल ड्राइव के प्रदर्शन में और भी बुरा प्रदर्शन होता है, इसलिए मांग करने पर उन शेड्स को डीवीडी लोड करने में 5 या अधिक सेकंड लग सकते हैं। पीसी की तुलना में कंसोल में उपयोग के लिए मेमोरी बहुत कम होती है, इसलिए वे डेटा को अधिक लोड करते हैं।


9
बहुत अच्छा जवाब। एक फ़ाइल बनाम एक से अधिक फ़ाइलों की मांग के उदाहरणों के साथ।
विलियम मैरिजेन

1
इसके अतिरिक्त, प्रतिस्पर्धी ऑनलाइन गेम के लिए, यह बहुत तेज़ है (और बहुत कम डिस्क स्थान का उपयोग करता है) यह सत्यापित करने के लिए कि खिलाड़ी ने एक भी बड़ी फ़ाइल के साथ छेड़छाड़ नहीं की है, यह व्यक्तिगत रूप से हजारों छोटी फ़ाइलों को मान्य करने के लिए है।
ट्रेवर पॉवेल

Google कीवर्ड: वर्चुअल फ़ाइल सिस्टम। वायरल फाइल सिस्टम के लिए अच्छी तरह से बताई गई आवश्यकता भी इंगित करती है कि गैर-आभासी फ़ाइल सिस्टम कुछ और पॉलिशिंग का उपयोग कर सकता है :(।
कोस

हालाँकि यह SSDs का उपयोग करने वाले लोगों के लिए बुरा है - हम HDDs पर शायद ही कभी भरी हुई सामग्री को स्थानांतरित नहीं कर सकते हैं, क्योंकि सभी गेम डेटा एक बड़ी फ़ाइल के अंदर है। वाह के लिए कहो मैं कभी आउटलैंड नहीं जाता; मैं बस उस फ़ाइल को एसएसडी से हटा दूंगा। कहने के लिए ऐसा करने योग्य नहीं ... CoD 4.
Mircea Chirea

6

एडम द्वारा दिए गए बहुत अच्छे उत्तर के अलावा मैं कुछ अन्य महत्वपूर्ण कारकों को भी बताना चाहूंगा:

  1. आपके पास जितनी कम फाइलें हैं, वह आपके एप्लिकेशन की तैनाती है। यह विशेष रूप से सच है यदि आप अपने एप्लिकेशन को आईओएस, एंड्रॉइड या विंडोज फोन जैसे मोबाइल प्लेटफार्मों पर तैनात करना चाहते हैं। यहां तक ​​कि अगर विंडोज फोन के मामले में आपके पास अभी भी उतनी ही फाइलें हो सकती हैं जितनी आप चाहते हैं, क्योंकि एक्सएपी-फाइलें, तैनाती के लिए उपयोग की जाती हैं, तो यह सिर्फ एक ज़िप संग्रह है,

  2. एक ही फाइल में आपकी सभी संपत्ति होने से यह सुनिश्चित होता है कि वे सभी "टुकड़ा में" डाउनलोड / पढ़े गए हैं । कई गेमर्स आपको संपत्ति डाउनलोड करने या खेल शुरू होने से पहले उन्हें अनपैक करने के लिए ध्यान देने योग्य देरी का बहाना देंगे, लेकिन वे गैर-लिप्त होंगे जब तक कि वे खेल के दौरान सूक्ष्म ठहराव का सामना करते हैं। बेशक आप रैम में अपने संसाधनों को प्री-कैश कर सकते हैं, लेकिन उन्हें "टुकड़ा में" लोड करना अभी भी इस उद्देश्य के लिए प्रति फ़ाइल आधार पर लोड करने की तुलना में आसान है।


मैंने एंड्रॉइड और ब्लैकबेरी का विकास किया है और कभी भी बहुत सारी छोटी फ़ाइलों के साथ किसी भी समस्या में नहीं चला। मैं हालांकि अब तक बड़ी फ़ाइलों के लाभ से अनजान था ...
ADB
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.