Performanz-Messung der Factory je Komponente


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