मैं वर्तमान में आने वाले संदेशों के प्रकारों को संभालने के लिए एक स्विच स्टेटमेंट का उपयोग कर रहा हूं जिसमें 20 या उससे अलग मामले हैं। इनमें से कुछ मामलों में परिमाण के आदेश दूसरों की तुलना में अधिक होने की संभावना है।कई मामलों के साथ जावा स्विच स्टेटमेंट अनुकूलित करना?
हॉटस्पॉट संकलक मामलों की जांच निष्पादित करने के लिए सही मामले को खोजने के लिए के आदेश अनुकूलित करने में सक्षम है या मैं अपने कोड की संरचना इतनी है कि सबसे आम मामलों पहले दिखाई देनी चाहिए:
switch(messageType)
{
case MOST_COMMON:
// handle it
break;
...
case LEAST_COMMON:
// handle it
break;
}
सभी मामलों परस्पर अनन्य हैं ।
क्या मैं संदेश पैटर्न पर रणनीति पैटर्न और मानचित्र लुकअप का उपयोग करना बेहतर कर दूंगा?
प्रदर्शन महत्वपूर्ण चिंता है क्योंकि मैं प्रति सेकंड हजारों संदेशों को संभालने में सक्षम हूं और ऑब्जेक्ट सृजन और विधि कॉल ओवरहेड पर कटौती करने की कोशिश कर रहा हूं।
बहुत धन्यवाद,
क्रिस
संपादित करें: संकेत के लिए धन्यवाद। संदेश टाइप एक मूल्यवान श्रेणी के साथ एक int है, ऐसा लगता है कि यह "टेबलविच" बाइटकोड को संकलित करेगा, इसलिए मामलों को पुन: व्यवस्थित करने की आवश्यकता नहीं है। जब तक आप यह सुनिश्चित करें कि इस स्विच का बयान आप प्रदर्शन की समस्याओं, तो मैं सुझाव है कि आप समय से पहले ही अनुकूलित कर रहे खड़ी कर रहा है कर रहे हैं JVM कल्पना की
प्रासंगिक हिस्सा यहाँ http://java.sun.com/docs/books/jvms/second_edition/html/Compiling.doc.html#14942
आईआईआरसी अधिकांश कंपाइलर सी और सी ++ में लुकअप टेबल के साथ 'स्विच' कथन संभालते हैं। जावा एक ही काम कर सकता है। लेकिन मुझसे गलती हो सकती है। – NullUserException
[जावा: यदि बनाम स्विच] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/1061101/java-if-vs-switch) –
JIT * निष्पादन के दौरान पथ को अनुकूलित करना चाहिए। मैं निश्चित रूप से देखने के लिए दोनों तंत्र प्रोफाइल होगा। –