Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 269248 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/jface/tests/performance/Bug269248TreeViewerSorterPerformance.java (+125 lines)
Added Link Here
1
package org.eclipse.jface.tests.performance;
2
3
import org.eclipse.jface.viewers.Viewer;
4
import org.eclipse.jface.viewers.ViewerSorter;
5
6
/**
7
 * @since 3.5
8
 */
9
public class Bug269248TreeViewerSorterPerformance extends TreeTest {
10
11
	private final String sortProp = "SORT";
12
13
	private long sortTime = 0;
14
	
15
	private class Sorter extends ViewerSorter {
16
17
		boolean reverse = false;
18
19
		/* (non-Javadoc)
20
		 * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
21
		 */
22
		public int compare(Viewer viewer, Object e1, Object e2) {
23
			if (reverse)
24
				return -super.compare(viewer, e1, e2);
25
			return super.compare(viewer, e1, e2);
26
		}
27
28
		/* (non-Javadoc)
29
		 * @see org.eclipse.jface.viewers.ViewerComparator#sort(org.eclipse.jface.viewers.Viewer, java.lang.Object[])
30
		 */
31
		public void sort(Viewer viewer, Object[] elements) {
32
			long time = System.currentTimeMillis();
33
			super.sort(viewer, elements);
34
			sortTime += System.currentTimeMillis() - time;
35
		}
36
37
		public boolean isSorterProperty(Object element, String property) {
38
			return sortProp.equals(property);
39
		};
40
41
		public void reverse() {
42
			reverse = !reverse;
43
		}
44
	}
45
46
	/**
47
	 * @param testName
48
	 * @param tagging
49
	 */
50
	public Bug269248TreeViewerSorterPerformance(String testName, int tagging) {
51
		super(testName, tagging);
52
	}
53
54
	/**
55
	 * @param testName
56
	 */
57
	public Bug269248TreeViewerSorterPerformance(String testName) {
58
		super(testName);
59
	}
60
61
	public void testTreeSortRefresh() {
62
		openBrowser();
63
64
		Sorter s = new Sorter();
65
		viewer.setSorter(s);
66
67
		for (int j = 1024; j < 65000; j *= 2) {
68
			TestTreeElement input = new TestTreeElement(0, null);
69
			viewer.setInput(input);
70
			input.createChildren(j);
71
			processEvents();
72
			viewer.add(input, input.children);
73
74
			long total = 0;
75
			sortTime = 0;
76
			for (int i = 0; i < 3; i++) {
77
				processEvents();
78
				s.reverse();
79
	
80
				long start = System.currentTimeMillis();
81
	//			startMeasuring();
82
				viewer.refresh();
83
	//			stopMeasuring();
84
				total += System.currentTimeMillis() - start;
85
//				System.out.println("Viewer refresh ("+ viewer.getTree().getItemCount() + " items) took: " + (System.currentTimeMillis() - start));
86
			}
87
			System.out.println("Viewer refresh ("+ viewer.getTree().getItemCount() + " items) sort: " + sortTime / 3 +"ms     refresh total: " + total / 3 + "ms");
88
		}
89
//		commitMeasurements();
90
//		assertPerformance();
91
	}
92
93
	public void testTreeSortUpdate() {
94
		openBrowser();
95
96
		Sorter s = new Sorter();
97
		viewer.setSorter(s);
98
99
		for (int j = 1024; j < 65000; j *= 2) {
100
			TestTreeElement input = new TestTreeElement(0, null);
101
			viewer.setInput(input);
102
			input.createChildren(j);
103
			viewer.add(input, input.children);
104
	
105
			long total = 0;
106
			sortTime = 0;
107
			for (int i = 0; i < 3; i++) {
108
				processEvents();
109
				s.reverse();
110
	
111
				long start = System.currentTimeMillis();
112
	//			startMeasuring();
113
				viewer.update(input, new String[] {sortProp});
114
	//			stopMeasuring();
115
				total += System.currentTimeMillis() - start;
116
//				System.out.println("Viewer update ("+ viewer.getTree().getItemCount() + " items) took: " + (System.currentTimeMillis() - start));
117
			}
118
			System.out.println("Viewer update ("+ viewer.getTree().getItemCount() + " items) sort: " + sortTime / 3 +"ms     update total: " + total / 3 + "ms");
119
		}
120
121
//		commitMeasurements();
122
//		assertPerformance();
123
	}
124
125
}

Return to bug 269248