मुझे उच्च डेटा (~ 1-2MB) उच्च दर (~ 200-300 एमबी/एस) पर स्टोर करने के लिए एक तरीका चाहिए।
कुछ शोध के बाद मैंने कई विकल्प मिल गया:मैक ओएस एक्स के तहत डिस्क पर अनुक्रमिक डेटा लिखने का सबसे तेज़ तरीका क्या है?
aio_write
- Direct_IO
- कार्बन फ़ाइल प्रबंधक के
PBWriteForkAsync()
- डिफ़ॉल्ट
fwrite()
, एक ब्लॉक में लपेटा जाता है और एक NSOperation में GCD के माध्यम से - NSData के
appendData
भेजा - ...
यह wiki page लिनक्स के तहत aio_write
की स्थिति का वर्णन करता है। जो मुझे नहीं मिला वह मैक ओएस एक्स
एनएसओपरेशन या ब्लॉक्स + जीसीडी गैर-अवरुद्ध आईओ प्राप्त करने के लिए एक तकनीक प्रतीत होता है, जो मुझे मिला नहीं था aio_write
की स्थिति के बारे में एक समान पृष्ठ था। इसका उपयोग कई ओपन सोर्स आईओ पुस्तकालयों में किया जाता है (उदाहरण के लिए https://github.com/mikeash/MAAsyncIO)
क्या किसी ऐसी समस्या के साथ कोई उपयुक्त समाधान मिला है?
वर्तमान में मैं PBWriteForkAsync
की ओर जाता हूं क्योंकि इसमें कुछ 'ट्यूनिंग' पैरामीटर होते हैं। यह 64-बिट सुरक्षित भी होना चाहिए।
बेंचमार्क से कम बताने का कोई तरीका नहीं है। आप mmap() पर भी विचार कर सकते हैं। – wnoise
मैं निश्चित रूप से उपाय करूँगा। मैं वर्तमान में सभी उपलब्ध विकल्पों की खोज कर रहा हूं। Osx aio_write के तहत –
एक बहुत अच्छा विकल्प नहीं है क्योंकि सिग्नल के अलावा अधिसूचित होने का कोई तरीका नहीं है। और फिर भी, आपको संबंधित उपयोगकर्ता डेटा नहीं मिलता है क्योंकि यह ओएसएक्स में समर्थित नहीं है। मैं सूची से aio_write स्क्रैप करने का सुझाव दूंगा। –