के लिए एक ओवरकिल है, मैं सहमत हूं कि फ़ोरैच लूप टाइपिंग को कम करता है और पठनीयता के लिए अच्छा है।जावा फोरैच लूप बार-बार निष्पादन
थोड़ा बैकअप, मैं कम विलंबता अनुप्रयोग विकास पर काम करता हूं और प्रति सेकंड प्रक्रिया के लिए 1 मिलियन पैकेट प्राप्त करता हूं। एक लाख पैकेट के माध्यम से Iterating और इस जानकारी को अपने श्रोताओं को भेजना। मैं श्रोताओं के सेट के माध्यम से फिर से शुरू करने के लिए foreach पाश का उपयोग कर रहा था।
प्रोफाइलिंग करना मुझे लगता है कि इटरेटर ऑब्जेक्ट्स फ़ोरैच लूप निष्पादित करने के लिए बनाए गए हैं। इंडेक्स आधारित फोरच में फ़ोरैच लूप को कनवर्ट करना मैंने संख्या को कम करके वहां बनाई गई वस्तुओं की संख्या में एक बड़ी गिरावट देखी। जीसी और बढ़ते आवेदन थ्रुपुट के।
संपादित: (भ्रम के लिए क्षमा करें, यह क्यू अधिक स्पष्ट बनाने) उदाहरण मैं (फिक्स्ड आकार) श्रोताओं की सूची और मैं के माध्यम से इस forloop एक लाख गुना एक दूसरे पाश है के लिए। जावा में एक overkill foreach है?
उदाहरण:
for(String s:listOfListeners)
{
// logic
}
तुलना
for (int i=0;i<listOfListeners.size();i++)
{
// logic
}
कोड के लिए
Profiled स्क्रीनशॉट को
for (int cnt = 0; cnt < 1_000_000; cnt++)
{
for (String string : list_of_listeners)
{
//No Code here
}
}
रूपरेखा के लिए आप पर अच्छा है, लेकिन क्या तुम सच में अपने प्रश्न reword चाहिए इसलिए लोग इसे गलत व्याख्या नहीं करते हैं - आप इस लूप को 1000,000 बार (पैकेट की संख्या) श्रोताओं की अपेक्षाकृत कम संख्या में सूचीबद्ध कर रहे हैं (list.size) –
@ AK4749: तो "सूची का आकार लगभग दस लाख ऑब्जेक्ट स्ट्रीमिंग है" पूर्ण लाल हेरिंग? –
@ AK4749 * एक लाख पैकेट के माध्यम से इटरेट करना और इस जानकारी को अपने श्रोताओं को भेजना *। इसका मतलब है पैकेट की एक बड़ी सूची और श्रोताओं की एक छोटी सूची (अपेक्षाकृत)। – maba