قائمة
مقارنة الكفاءة
للوصول البسيط للقراءة فقط إلى مجموعة ، لا يوجد أي فرق في الأداء بين الحلقة المناسبة ونهج التكرار. تستخدم الحلقة من أجل each داخليًا آلية التكرار. كائن o = list.get (i) ؛ }
يمكن أن يكون نهج التكرار (كلاهما حلقة EACH والتكرار الصريح) أكثر فعالية بشكل ملحوظ بالنسبة لبعض هياكل البيانات. على سبيل المثال ، في قائمة مرتبطة ، Get (i) هي عملية o (n). باستخدام عملية التكرار O (1) Next () يضمن تشغيل الحلقة في وقت O (n) ، في حين أن GET (i) ستعمل في O (n bytecode لكلا النهجين:
for-each loop
Lista = new ArrayList(); for (Integer integer : a) { integer.toString(); }
aload 1 invokeInterface Java/util/list.iterator () ljava/util/iterator ؛ أستور 3 ...
iterator
Lista = new ArrayList(); for (Iterator iterator = a.iterator(); iterator.hasNext();) { Integer integer = iterator.next(); integer.toString(); }
aload 1 invokeInterface Java/util/list.iterator () ljava/util/iterator ؛ أستور 2 ... كما يمكنك مراقبة ، فإن رمز bytecode الذي تم إنشاؤه متطابق ، مما يشير إلى عدم عقوبة الأداء في استخدام أي منهج. يوفر التكرار مزايا فقط عند العمل مع هياكل بيانات محددة أو يتطلب سلوك تكرار مخصص. من أجل البساطة وقابلية القراءة ، تكون الحلقة الخاصة بـ EAC هي الخيار المفضل عمومًا.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3