ما هو أسرع أو كتابة نص إلى ملف أو تحويل إلى بايت وكتابةه إلى ملف؟

StackOverflow https://stackoverflow.com/questions/1124609

  •  13-09-2019
  •  | 
  •  

سؤال

لدي شرط لكتابة HTML إلى نظام الملفات وكنت أتساءل عما إذا كان هناك أي زيادة السرعة في تحويله إلى البايتات والكتابة باستخدامه باستخدام ملف file.writealltext () (أو طريقة نصية مشابهة).

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

المحلول

file.writealltext. يستخدم streamwriter وراء الكواليس:

public static void WriteAllText(string path, string contents, Encoding encoding)
{
    using (StreamWriter writer = new StreamWriter(path, false, encoding))
    {
        writer.Write(contents);
    }
}

لديك سلسلة بالفعل، لذلك فإن تحويلها إلى صفيف بايت سيكون بلا معنى لأن هذا يتم تنفيذها داخل streamwriter.flush. الطريقة على أي حال باستخدام الأساس تشفير صف دراسي. يسمى فلوش من قبل Streamwriter.dispos. الطريقة التي تدعي البند باستخدامها. هذا مقتطف من مصدر تدفق عبر العاكس:

int count = this.encoder.GetBytes(this.charBuffer, 0, this.charPos, this.byteBuffer, 0, flushEncoder);

يمكنك أن ترى أن لديه charbuffer. هذا مجرد char [] صفيف الذي يكتبه عند القيام به Streamwriter.write (سلسلة).

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

إذا حصلت على مشكلات التحويل، فاستخدم الترميز. بالمعلمة النهائية في الحمل الزائد 3 المعلمة، كما file.writealltext (سلسلة، سلسلة) يستخدم UTF8 دون BOM.

نصائح أخرى

ما رأيك يحدث داخل file.writealltext؟ في النهاية، ستكون البايتات تضرب القرص. هذا القرص ليس من غير المرجح أن يكون الجزء البطيء في هذه السلسلة على أي حال. ما لم تكن البيانات المكتوبة كبيرة جدا، فلن قلق بشأن ذلك، وعلا استخدم التنفيذ الذي شعرت به هو الأكثر ملاءمة. إذا قمت بتصميم التعليمات البرمجية جيدا، فلن تكون هناك شيء رئيسي للتغيير لاحقا، إذا لزم الأمر.

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

(سأكون مندهشا جدا إذا تبين أن الرقبة الزجاجة لتكون أي شيء للقيام بتحويل السلسلة إلى صفيف بايت أم لا. رقبة الزجاجة مع شيء من هذا القبيل سيكون سرعة كتابة القرص الخاص بك)

لا تتحسن قبل الأوان.

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