जावा में 6 नीचे कोड अपेक्षित के रूप में चल रहा है लेकिन जावा 8 में इसमें अधिक समय लग रहा है। दिलचस्प हिस्सा यह है कि घटकों को घटकों को सक्षम और अक्षम करने के लिए घटक एक ही विधि setEnable()
का उपयोग करते हैं, लेकिन अक्षम करने योग्य कॉल सक्षम करने की तुलना में काफी अधिक समय लेता है, लगभग दोगुना। जावा 8 में अक्षम करना जावा 1.6 में से एक से अधिक समय ले रहा है। सवाल यह है कि ऐसा क्यों होता है? क्या यह जावा 8 की एक प्रदर्शन समस्या है? कर रहे हैं जावा 8 के लिए परिणामजावा 8 की तुलना में जावा 8 खराब जीयूआई प्रदर्शन 6
Sun Microsystems Inc. 1.6.0_45
Initializing GUI
GUI initialized in 1105 ms
Disabling
Disabled in 687 ms
Enabling
Enabled in 375 ms
यहाँ:
Oracle Corporation 1.8.0_25
Initializing GUI
GUI initialized in 604 ms
Disabling
Disabled in 6341 ms
Enabling
Enabled in 370 ms
कोड:
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class TestGUI extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
public TestGUI() {
initGUI();
}
public void actionPerformed(ActionEvent e) {
String text;
if(e.getActionCommand().equals("Enable-ALL")){
enableAll();
text= "Disable-ALL";
}
else{
disableAll();
text= "Enable-ALL";
}
((JButton)e.getSource()).setText(text);
((JButton)e.getSource()).setEnabled(true);
}
private void initGUI() {
long m = System.currentTimeMillis();
System.out.println("Initializing GUI");
setTitle(System.getProperty("java.vendor") + " " + System.getProperty("java.version"));
setLayout(new FlowLayout());
JButton b = new JButton("Disable-ALL ");
b.addActionListener(this);
add(b);
for (int i = 1; i < 10001; i++) {
b = new JButton("Button " + i);
add(b);
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600, 600);
setVisible(true);
m = System.currentTimeMillis() - m;
System.out.println("GUI initialized in " + m + " ms");
}
private void disableAll() {
long m = System.currentTimeMillis();
System.out.println("Disabling");
for (Component c : getContentPane().getComponents()) {
c.setEnabled(false);
}
m = System.currentTimeMillis() - m;
System.out.println("Disabled in " + m + " ms");
}
private void enableAll() {
long m = System.currentTimeMillis();
System.out.println("Enabling");
for (Component c : getContentPane().getComponents()) {
c.setEnabled(true);
invalidate();
}
m = System.currentTimeMillis() - m;
System.out.println("Enabled in " + m + " ms");
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
System.out.println(System.getProperty("java.vendor") + " "
+ System.getProperty("java.version"));
new TestGUI();
}
});
}
}
रास्ता के लिए प्रदर्शन को मापने के नहीं है यही कारण है कि जावा अनुप्रयोगों। वर्तमान में आप कक्षा लोडिंग समय लागत शामिल करते हैं जो केवल एक बार होता है। माइक्रो बेंचमार्क – Vic
के लिए जेएमएच लाइब्रेरी का प्रयोग करें हाँ आप सही हैं यह बेंचमार्क नहीं है .. हालांकि उपयोगकर्ता के रूप में मैं धीमा महसूस कर सकता हूं। जैसा कि आप जावा 1.8 अक्षम कर सकते हैं 6341 एमएस में सक्षम है जबकि 370 एमएस सक्षम है। वे एक ही विधि setEnable() का उपयोग कर रहे हैं। ऐसा क्यों हुआ? – mbsau
6 सेकंड बहुत समय है - यदि आप इसे कुछ बार चलाते हैं तो क्या आपको समान आंकड़े मिलते हैं? – assylias