Des verwendetes Script unter
guibuilder/lib/tutorial/AllComponents.xml
wurde fünfmal
angezeigt bei einem PC mit 750MHz.
Nur ca. zwei Prozent der CPU-Zeit wird von der Factory selbst verbraucht; der Rest ist Swing und hier besonders JComponent.paint sowie das Event-Handling.
Die Tabelle zeigt, daß Swing kein Rennpferd ist.
Hinzu kommen einige Ausreißer wie z.B. die ComboBox: 14 Stück
davon kosten eine glatte Sekunde; auf einem langsamen PC mit 250 MHz also
drei Sekunden!
Die Gestaltung mit HTML in Labels sieht zwar schick aus, ist aber besonders
langsam.
Bei einigen Komponenten ist zu bedenken, daß sie zusätzlich eine
Scollpane benötigen, die weitere 41ms kostet.
Die 4,33ms für einen Menüeintrag erscheinen zwar gering, doch sollte
man sich bei der Gestaltung von Menüs trotzdem zurückhalten.
DragDrop scheint besonders teuer zu sein; deswegen wurde dieses aus der
Tree-Komponente auch wieder entfernt.
In Klammern die Werte nach der Optimierung einiger Komponenten.
Nachtrag:
Diese Zahlen stimmen bestenfalls in ihrem Verhältnis zueinander;
offensichtlich geht hier auch die Zeit ein, die der Profiler selbst verbraten
hat.
Anzahl Aufrufe |
Aufgerufene Methode | Zeit (ms) | Durchschnitt | Bemerkung |
59 | de.guibuilder.framework.GuiButton.<init>(String;)V | 210 | 3,56 | |
21 | de.guibuilder.framework.GuiCheck.<init>(String;)V | 110 | 5,24 | |
17 | de.guibuilder.framework.GuiCombo.<init>()V | 1171 | 68,88 | siehe List |
5 | de.guibuilder.framework.GuiDate.<init>()V | 180(40) | 36,00(8,00) | |
5 | de.guibuilder.framework.GuiDesktop.<init>()V | 20 | 4,00 | |
5 | de.guibuilder.framework.GuiEditor.<init>()V | 100 | 20,00 | +Scrollpane |
5 | de.guibuilder.framework.GuiEditor.setPage(URL;)V | 1381 | 276,20 | HTML! |
6 | de.guibuilder.framework.GuiForm.<init>()V | 160 | 26,67 | |
6 | de.guibuilder.framework.GuiForm.getGuiMenuBar()GuiMenuBar; | 60 | 10,00 | new MenuBar |
5 | de.guibuilder.framework.GuiForm.getToolBar()GuiToolbar; | 20 | 4,00 | new Toolbar |
25 | de.guibuilder.framework.GuiGroup.<init>(String;)V | 70 | 2,80 | |
10 | de.guibuilder.framework.GuiInternalFrame.<init>(String;)V | 1241 | 124,10 | |
75 | de.guibuilder.framework.GuiLabel.<init>(Ljava/awt/Component;String;)V | 160 | 2,13 | |
15 | de.guibuilder.framework.GuiLabel.<init>(String;)V | 2153 | 143,53 | HTML! |
10 | de.guibuilder.framework.GuiList.<init>()V | 80 | 8,00 | siehe Combo |
16 | de.guibuilder.framework.GuiMemo.<init>()V | 330 | 20,63 | +Scrollpane |
15 | de.guibuilder.framework.GuiMenu.<init>(String;)V | 140 | 9,33 | |
15 | de.guibuilder.framework.GuiMenuBar.add(JMenuItem;) | 10 | 0,67 | |
60 | de.guibuilder.framework.GuiMenuItem.<init>(String;)V | 260 | 4,33 | |
5 | de.guibuilder.framework.GuiMenuItemCheckBox.<init>(String;)V | 30 | 6,00 | |
20 | de.guibuilder.framework.GuiMenuItemOption.<init>(String;)V | 120 | 6,00 | |
25 | de.guibuilder.framework.GuiMoney.<init>()V | 350(290) | 14,00(11,60) | |
5 | de.guibuilder.framework.GuiNumber.<init>()V | 60 | 12,00 | |
30 | de.guibuilder.framework.GuiOption.<init>(String;)V | 140 | 4,67 | |
17 | de.guibuilder.framework.GuiPanel.<init>()V | 90 | 5,29 | |
5 | de.guibuilder.framework.GuiPassword.<init>()V | 70 | 14,00 | |
10 | de.guibuilder.framework.GuiPopupMenu.<init>(String;)V | 30 | 3,00 | |
10 | de.guibuilder.framework.GuiScrollBar.<init>(String;)V | 120 | 12,00 | |
15 | de.guibuilder.framework.GuiScrollBox.<init>(Ljava/awt/Component;)V | 340 | 22,67 | |
15 | de.guibuilder.framework.GuiSlider.<init>(String;)V | 80 | 5,33 | |
5 | de.guibuilder.framework.GuiSplit.<init>()V | 100(40) | 20,00(8,00) | |
50 | de.guibuilder.framework.GuiTab.<init>(String;)V | 120 | 2,40 | |
10 | de.guibuilder.framework.GuiTable.<init>(String;)V | 180 | 18,00 | +Scrollpane |
30 | de.guibuilder.framework.GuiTable.addSpalte(L/TableColumnAble;String;I)V | 80 | 2,67 | |
10 | de.guibuilder.framework.GuiTable.tableReady()V | 70 | 7,00 | |
5 | de.guibuilder.framework.GuiTabset.<init>(String;)V | 40 | 8,00 | |
50 | de.guibuilder.framework.GuiTabset.addTab(L/GuiTab;)V | 70 | 1,40 | |
26 | de.guibuilder.framework.GuiText.<init>()V | 380 | 14,62 | |
5 | de.guibuilder.framework.GuiTime.<init>()V | 100(40) | 20,00(8,00) | |
30 | de.guibuilder.framework.GuiToolbar.addGuiButton(L/GuiButton;)V | 20 | 0,67 | |
5 | de.guibuilder.framework.GuiTree.<init>(GuiTreeNode;)V | 310 | 62,00 | +Scrollpane |
6 | de.guibuilder.framework.GuiTreeElement.<init>(String;String;)V | 0 | 0 | |
1 | de.guibuilder.framework.GuiTreeNode.<clinit>()V | 10 | 10,00 | |
60 | de.guibuilder.framework.GuiTreeNode.<init>(String;)V | 0 | 0 | |
65 | de.guibuilder.framework.GuiUtil.makeIcon(String;)Ljavax/swing/ImageIcon; | 80 | 1,23 | für Buttons, Menüs, Label |
355 | java.awt.Container.add(Ljava/awt/Component;Ljava/lang/Object;)V | 240 | 0,68 | sehr gut! |
355 | java.awt.GridBagConstraints.<init>(IIIIDDIILjava/awt/Insets;II)V | 0 | 0 | sehr gut! |
23 | javax.swing.AbstractButton.setMnemonic(C)V | 30 | 1,30 | |
5 | javax.swing.JComboBox.setEditable(Z)V | 60 | 12,00 | |
17 | javax.swing.JComboBox.setModel(Ljavax/swing/ComboBoxModel;)V | 40 | 2,35 | |
30 | javax.swing.JComponent.setToolTipText(String;)V | 10 | 0,33 | |
5 | javax.swing.JEditorPane.setContentType(String;)V | 60 | 12,00 | |
10 | javax.swing.JLabel.<init>()V | 30 | 3,00 | |
10 | javax.swing.JLabel.<init>(String;)V | 30 | 3,00 | |
5 | javax.swing.JLabel.setIcon(Ljavax/swing/Icon;)V | 10 | 2,00 | |
65 | javax.swing.JMenu.add(Ljavax/swing/JMenuItem;)Ljavax/swing/JMenuItem; | 40 | 0,62 | |
14 | javax.swing.JMenu.addSeparator()V | 60 | 4,29 | |
21 | javax.swing.JMenuItem.setAccelerator(Ljavax/swing/KeyStroke;)V | 20 | 0,95 | |
5 | javax.swing.JRootPane.setDefaultButton(Ljavax/swing/JButton;)V | 30 | 6,00 | |
36 | javax.swing.JScrollPane.<init>(Ljava/awt/Component;)V | 1471 | 41,00 | für Editor, Memo, Table, Tree |
10 | javax.swing.JSlider.createStandardLabels(I)Ljava/util/Hashtable; | 210 | 21,00 | |
10 | javax.swing.JSlider.setPaintLabels(Z)V | 290 | 29,00 | |
5 | javax.swing.JToolBar.addSeparator()V | 10 | 2,00 |
Stand: 1.4.2001