From b25bcf5d06e321f31fcd18fb60511cb508846d9a Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Mon, 3 Dec 2007 12:40:04 +0000 Subject: [PATCH] performance test for subtree caching svn changeset:3118/svn branch:trunk --- .../tests/PerformanceTestSubTreeCaching.java | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/com/itmill/toolkit/tests/PerformanceTestSubTreeCaching.java diff --git a/src/com/itmill/toolkit/tests/PerformanceTestSubTreeCaching.java b/src/com/itmill/toolkit/tests/PerformanceTestSubTreeCaching.java new file mode 100644 index 0000000000..c866243c28 --- /dev/null +++ b/src/com/itmill/toolkit/tests/PerformanceTestSubTreeCaching.java @@ -0,0 +1,81 @@ +package com.itmill.toolkit.tests; + +import java.util.Date; + +import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.CustomComponent; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.OrderedLayout; +import com.itmill.toolkit.ui.Table; + +public class PerformanceTestSubTreeCaching extends CustomComponent { + + private OrderedLayout main; + + private OrderedLayout testContainer; + + private Date startTime; + + private Label result; + + private static final String DESCRIPTION = "Hyphothesis: Toolkit 4 has major architechtural problem when adding " + + "small incrementall updates to a container which has either a lot or " + + "some very slow components in it. Toolkit 5 has 'subtree caching' and a" + + " small amount of logic in containers, so CommunicationManager can assure" + + " that client do not need information about unchanged components it contains." + + " Completing test ought to be much faster with Toolkit 5."; + + private static final int INITIAL_COMPONENTS = 40; + + public PerformanceTestSubTreeCaching() { + main = new OrderedLayout(); + setCompositionRoot(main); + addInfo(); + + Button b = new Button("start test", this, "startTest"); + b + .setDescription("Push this button to start test. A test label will be rendered above existing components."); + main.addComponent(b); + b = new Button("end test", this, "endTest"); + b + .setDescription("Push this button as soon as test componenet is rendered."); + main.addComponent(b); + + result = new Label(); + main.addComponent(result); + + testContainer = new OrderedLayout(); + populateContainer(testContainer, INITIAL_COMPONENTS); + main.addComponent(testContainer); + } + + public void startTest() { + startTime = new Date(); + testContainer.addComponentAsFirst(new Label("Simplel Test Component")); + } + + public void endTest() { + long millis = (new Date()).getTime() - startTime.getTime(); + Float f = new Float(millis / 1000.0); + result.setValue("Test completed in " + f + " seconds"); + } + + /** + * Adds n Table components to given container + * + * @param testContainer2 + */ + private void populateContainer(OrderedLayout container, int n) { + for (int i = 0; i < n; i++) { + // array_type array_element = [i]; + Table t = TestForTablesInitialColumnWidthLogicRendering + .getTestTable(5, 100); + container.addComponent(t); + } + } + + private void addInfo() { + main.addComponent(new Label(DESCRIPTION, Label.CONTENT_XHTML)); + } + +} -- 2.39.5