]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/src/com/ibm/icu/dev/test/perf/RBBIPerf.java
icu4jsrc
[Dictionary.git] / jars / icu4j-4_2_1-src / src / com / ibm / icu / dev / test / perf / RBBIPerf.java
1 /*\r
2 **********************************************************************\r
3 * Copyright (c) 2002-2004, 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.io.FileInputStream;\r
10 import java.io.InputStream;\r
11 import java.io.InputStreamReader;\r
12 import java.io.IOException;\r
13 import java.text.BreakIterator;\r
14 \r
15 /**\r
16  * A class for testing UnicodeSet performance.\r
17  *\r
18  * @author Alan Liu\r
19  * @since ICU 2.4\r
20  */\r
21 public class RBBIPerf extends PerfTest {\r
22 \r
23     String                  dataFileName;\r
24     RuleBasedBreakIterator  bi;\r
25     BreakIterator           jdkbi;\r
26     String                  testString;\r
27 \r
28     public static void main(String[] args) throws Exception {\r
29         new RBBIPerf().run(args);\r
30     }\r
31 \r
32     protected void setup(String[] args) {\r
33         // We only take one argument, the pattern\r
34         if (args.length != 2) {\r
35             throw new RuntimeException("RBBITest params:  data_file_name break_iterator_type ");\r
36         }\r
37 \r
38         try {\r
39             dataFileName = args[0];\r
40             StringBuffer  testFileBuf = new StringBuffer();\r
41             InputStream is = new FileInputStream(dataFileName);\r
42             InputStreamReader isr = new InputStreamReader(is, "UTF-8");           \r
43             int c;\r
44             for (;;) {\r
45                 c = isr.read();\r
46                 if (c < 0) {\r
47                     break;\r
48                 }\r
49                 UTF16.append(testFileBuf, c);\r
50             }\r
51             testString = testFileBuf.toString();\r
52         }\r
53         catch (IOException e) {\r
54             throw new RuntimeException(e.toString());   \r
55         }\r
56         \r
57         if (args.length >= 2) {\r
58             if (args[1].equals("char")) {\r
59                 bi  = (RuleBasedBreakIterator)com.ibm.icu.text.BreakIterator.getCharacterInstance();  \r
60             } else if (args[1].equals("word")) {\r
61                 bi  = (RuleBasedBreakIterator)com.ibm.icu.text.BreakIterator.getWordInstance();\r
62             } else if (args[1].equals("line")) {\r
63                 bi  = (RuleBasedBreakIterator)com.ibm.icu.text.BreakIterator.getLineInstance();\r
64             } else if (args[1].equals("jdkline")) {\r
65                 jdkbi  = BreakIterator.getLineInstance();\r
66             }\r
67         }\r
68         if (bi!=null ) {\r
69             bi.setText(testString);\r
70         }\r
71         if (jdkbi != null) {\r
72             jdkbi.setText(testString);   \r
73         }\r
74         \r
75     }\r
76 \r
77     \r
78     \r
79     PerfTest.Function testRBBINext() {\r
80         return new PerfTest.Function() {\r
81             \r
82             public void call() {\r
83                 int n;\r
84                 if (bi != null) {\r
85                     n = bi.first();\r
86                     for (; n != BreakIterator.DONE; n=bi.next()) {\r
87                     }   \r
88                 } else {\r
89                     n = jdkbi.first();\r
90                     for (; n != BreakIterator.DONE; n=jdkbi.next()) {\r
91                     }   \r
92                 }\r
93             }\r
94         \r
95             \r
96             public long getOperationsPerIteration() {\r
97                 int n;\r
98                 int count = 0;\r
99                 if (bi != null) {\r
100                     for (n=bi.first(); n != BreakIterator.DONE; n=bi.next()) {\r
101                         count++;\r
102                     }\r
103                 } else {                  \r
104                     for (n=jdkbi.first(); n != BreakIterator.DONE; n=jdkbi.next()) {\r
105                         count++;\r
106                     }\r
107                 }\r
108                 return count;\r
109             }\r
110         };\r
111     }\r
112     \r
113     \r
114     PerfTest.Function testRBBIPrevious() {\r
115         return new PerfTest.Function() {\r
116             \r
117             public void call() {\r
118                 bi.first();\r
119                 int n=0;\r
120                 for (n=bi.last(); n != BreakIterator.DONE; n=bi.previous()) {\r
121                 }   \r
122             }\r
123             \r
124             \r
125             public long getOperationsPerIteration() {\r
126                 int n;\r
127                 int count = 0;\r
128                 for (n=bi.last(); n != BreakIterator.DONE; n=bi.previous()) {\r
129                     count++;\r
130                 }   \r
131                 return count;\r
132             }\r
133         };\r
134     }\r
135 \r
136 \r
137     PerfTest.Function testRBBIIsBoundary() {\r
138         return new PerfTest.Function() {\r
139             \r
140             public void call() {\r
141                 int n=testString.length();\r
142                 int i;\r
143                 for (i=0; i<n; i++) {\r
144                     bi.isBoundary(i);\r
145                 }   \r
146             }\r
147             \r
148             public long getOperationsPerIteration() {\r
149                 int n = testString.length();\r
150                 return n;\r
151             }\r
152         };\r
153     }\r
154 \r
155 \r
156  \r
157 }\r