"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > العنصر احذر من أداء تسلسل السلسلة

العنصر احذر من أداء تسلسل السلسلة

تم النشر بتاريخ 2024-11-08
تصفح:450

1. تسلسل السلاسل مع العامل ( ):
يعد استخدام عامل التشغيل لتسلسل السلاسل أمرًا مناسبًا لعدد قليل من التسلسلات، ولكنه يمثل مشكلات في الأداء للعمليات واسعة النطاق بسبب ثبات السلاسل.
في كل مرة يتم إنشاء سلسلة جديدة، يتم نسخ محتويات جميع السلاسل السابقة، مما يؤدي إلى وقت تربيعي للسلاسل الكبيرة.

مثال غير صحيح (التسلسل المتكرر مع ):

public String criaFatura(List itens) {
    String fatura = "";
    for (Item item : itens) {
        fatura  = item.toString();  // ineficiente para grandes listas
    }
    return fatura;
}

2. استخدام StringBuilder لتحسين الأداء:
بدلاً من استخدام ، استخدم StringBuilder، الذي يسمح لك بتعديل السلاسل بكفاءة، وتخصيص الذاكرة ديناميكيًا حسب الحاجة.
وقت التسلسل مع StringBuilder خطي، مما يحسن الأداء بشكل ملحوظ.

مثال صحيح (استخدام StringBuilder):

public String criaFatura(List itens) {
    StringBuilder fatura = new StringBuilder(itens.size() * 80);  // pré-alocação
    for (Item item : itens) {
        fatura.append(item.toString());
    }
    return fatura.toString();
}

3. مقارنة الأداء:
حتى بعد التحسينات في Java 6 لتحسين المشغل، يظل استخدام StringBuilder أكثر كفاءة. على جهاز اختبار، كان استخدام StringBuilder أسرع بـ 6.5 مرة من المشغل في سيناريو يحتوي على 100 عنصر.

مثال على التحسين دون التخصيص المسبق:

public String criaFatura(List itens) {
    StringBuilder fatura = new StringBuilder();  // sem pré-alocação
    for (Item item : itens) {
        fatura.append(item.toString());
    }
    return fatura.toString();
}

4. المغزى من القصة:
لا تستخدمه لتسلسل العديد من السلاسل. سرعان ما يصبح الأداء غير مقبول مع تزايد عدد التسلسلات.
استخدم StringBuilder.append أو البدائل مثل صفائف الأحرف للكميات الكبيرة من التسلسلات.

5. البدائل الأخرى:
بالإضافة إلى StringBuilder، قد تفكر في استخدام مصفوفات الأحرف للمعالجة واسعة النطاق أو لدمج السلاسل بشكل أكثر كفاءة، خاصة عند الحاجة إلى تحكم أفضل في الأداء.

خاتمة:
استخدم StringBuilder لتسلسل السلاسل بكفاءة.
تجنب استخدام العامل في الحلقات أو لأحجام كبيرة من السلاسل، حيث يتدهور الأداء بشكل ملحوظ مع زيادة عدد التسلسلات.

أمثلة من الكتاب:

Item  Cuidado com o desempenho da concatenação de string

Item  Cuidado com o desempenho da concatenação de string

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/giselecoder/item-63-cuidado-com-o-desempenho-da-concatenacaode-string-2b67?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3