]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/icu/dev/test/perf/UnicodeSetPerf.java
icu4jsrc
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / icu / dev / test / perf / UnicodeSetPerf.java
1 /*\r
2 **********************************************************************\r
3 * Copyright (c) 2002-2007, International Business Machines\r
4 * Corporation and others.  All Rights Reserved.\r
5 **********************************************************************\r
6 */\r
7 package com.ibm.icu.dev.test.perf;\r
8 import com.ibm.icu.text.*;\r
9 import java.util.HashSet;\r
10 import java.util.Iterator;\r
11 \r
12 /**\r
13  * A class for testing UnicodeSet performance.\r
14  *\r
15  * @author Alan Liu\r
16  * @since ICU 2.4\r
17  */\r
18 public class UnicodeSetPerf extends PerfTest {\r
19 \r
20     String pattern;\r
21     UnicodeSet testChars;\r
22     UnicodeSetIterator it;\r
23     UnicodeSet us;\r
24     HashSet hs;\r
25 \r
26     public static void main(String[] args) throws Exception {\r
27         new UnicodeSetPerf().run(args);\r
28     }\r
29 \r
30     protected void setup(String[] args) {\r
31         // We only take one argument, the pattern\r
32         if (args.length != 1) {\r
33             throw new RuntimeException("Please supply UnicodeSet pattern");\r
34         }\r
35 \r
36         pattern = args[0];\r
37         testChars = new UnicodeSet(pattern);\r
38         it = new UnicodeSetIterator(testChars);\r
39         us = new UnicodeSet();\r
40         hs = new HashSet();\r
41     }\r
42 \r
43     PerfTest.Function testUnicodeSetAdd() {\r
44         return new PerfTest.Function() {\r
45             public void call() {\r
46                 us.clear();\r
47                 it.reset();\r
48                 int n=0;\r
49                 while (it.nextRange()) {\r
50                     for (int cp = it.codepoint; cp <= it.codepointEnd; ++cp) {\r
51                         us.add(cp);\r
52                         ++n;\r
53                     }\r
54                 }\r
55             }\r
56 \r
57             public long getOperationsPerIteration() {\r
58                 return testChars.size();\r
59             }\r
60         };\r
61     }\r
62 \r
63     PerfTest.Function testHashSetAdd() {\r
64         return new PerfTest.Function() {\r
65             public void call() {\r
66                 hs.clear();\r
67                 it.reset();\r
68                 int n=0;\r
69                 while (it.nextRange()) {\r
70                     for (int cp = it.codepoint; cp <= it.codepointEnd; ++cp) {\r
71                         hs.add(new Integer(cp));\r
72                         ++n;\r
73                     }\r
74                 }\r
75             }\r
76 \r
77             public long getOperationsPerIteration() {\r
78                 return testChars.size();\r
79             }\r
80         };\r
81     }\r
82 \r
83     PerfTest.Function testUnicodeSetContains() {\r
84         us.clear();\r
85         us.set(testChars);\r
86         \r
87         return new PerfTest.Function() {\r
88             public void call() {\r
89                 int temp = 0;\r
90                 for (int cp = 0; cp <= 0x10FFFF; ++cp) {\r
91                     if (us.contains(cp)) {\r
92                         temp += cp;\r
93                     }\r
94                 }\r
95             }\r
96 \r
97             public long getOperationsPerIteration() {\r
98                 return 0x110000;\r
99             }\r
100         };\r
101     }\r
102 \r
103     PerfTest.Function testHashSetContains() {\r
104         hs.clear();\r
105         it.reset();\r
106         while (it.next()) {\r
107             hs.add(new Integer(it.codepoint));\r
108         }\r
109         return new PerfTest.Function() {\r
110             public void call() {\r
111                 int temp = 0;\r
112                 for (int cp = 0; cp <= 0x10FFFF; ++cp) {\r
113                     if (hs.contains(new Integer(cp))) {\r
114                         temp += cp;\r
115                     }\r
116                 }\r
117             }\r
118 \r
119             public long getOperationsPerIteration() {\r
120                 return 0x110000;\r
121             }\r
122         };\r
123     }\r
124 \r
125     PerfTest.Function testUnicodeSetIterate() {\r
126         return new PerfTest.Function() {\r
127             public void call() {\r
128                 int temp = 0;\r
129                 UnicodeSetIterator uit = new UnicodeSetIterator(testChars);\r
130                 while (uit.next()) {\r
131                     temp += uit.codepoint;\r
132                 }\r
133             }\r
134 \r
135             public long getOperationsPerIteration() {\r
136                 return testChars.size();\r
137             }\r
138         };\r
139     }\r
140 \r
141     PerfTest.Function testHashSetIterate() {\r
142         hs.clear();\r
143         it.reset();\r
144         while (it.next()) {\r
145             hs.add(new Integer(it.codepoint));\r
146         }\r
147         return new PerfTest.Function() {\r
148             public void call() {\r
149                 int temp = 0;\r
150                 Iterator itr = hs.iterator();\r
151                 while (itr.hasNext()) {\r
152                     temp += ((Integer)itr.next()).intValue();\r
153                 }\r
154             }\r
155 \r
156             public long getOperationsPerIteration() {\r
157                 return testChars.size();\r
158             }\r
159         };\r
160     }\r
161 }\r