سؤال

أحاول قراءة بعض الملفات النصية (حوالي 300 كيلو بايت لكل منهما). حتى الآن ، كنت أستخدم filestream لفتح الملف وقراءته. ( علامة التبويب محدد ). ومع ذلك ، سمعت عن الملف المعين للذاكرة في .NET 4.0. هل ستجعل قراءاتي أسرع؟

هل هناك أي رمز عينة تقوم بقراءة ملف بسيط ومقارنة الأداء؟

هل كانت مفيدة؟

المحلول

إذا كانت الملفات على القرص وتحتاج فقط إلى قراءتها في الذاكرة ، فلن يساعد استخدام ملف تم تعيينه ذاكرة على الإطلاق ، حيث لا تزال بحاجة إلى قراءتها من القرص.

إذا كان كل ما تفعله هو قراءة الملفات ، فلا فائدة من رسم خرائط الذاكرة.

الملفات المعينة الذاكرة هي للاستخدام عندما تقوم بعمل مكثف مع الملف (القراءة والكتابة والتغيير) وتريد تجنب القرص IO.

نصائح أخرى

إذا كنت مجرد القراءة مرة واحدة ثم الملفات المخصصة للذاكرة لا معنى لها ؛ لا يزال يستغرق نفس الوقت لتحميل البيانات من القرص. تتفوق الملفات التي تم تصنيفها على الذاكرة عندما يجب إجراء العديد من القراءات العشوائية و/أو الكتابة على ملف نظرًا لعدم حاجة إلى مقاطعة عمليات القراءة أو كتابة عمليات البحث.

مع لك مقدار البيانات MMFs لا تعطي أي ميزة. ومع ذلك ، بشكل عام ، إذا كان أحدهم يزعجون إجراء الاختبارات ، فسيجد ، أن نسخ الملفات الكبيرة (الضخمة) التي تستخدم MMFS أسرع من استدعاء READFILE/WRITEFILE بالتتابع. يحدث هذا بسبب آليات مختلفة تستخدم داخليًا في Windows لإدارة MMF وملف IO.

معالجة البيانات في الذاكرة أسرع دائمًا من القيام بشيء مماثل عبر القرص IO. إذا كانت المعالجة الخاصة بك متسلسلة وتناسب الذاكرة بسهولة ، فيمكنك استخدامها file.readlines () للحصول على خط البيانات عن طريق الخط ومعالجةها بسرعة دون أن تكون الذاكرة الصلبة النفقات العامة. مثال هنا: كيفية فتح ملف نصي كبير في C#

تحقق من هذه الإجابة أيضًا: متى تستخدم ملفات الذاكرة؟

لا ينصح الملف المعين للذاكرة بقراءة الملفات النصية. لقراءة الملف النصي الذي تقوم به بشكل صحيح مع Filestream. MMP هو الأفضل لقراءة البيانات الثنائية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top