2 **********************************************************************
\r
3 * Copyright (c) 2002-2004, International Business Machines
\r
4 * Corporation and others. All Rights Reserved.
\r
5 **********************************************************************
\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
16 * A class for testing UnicodeSet performance.
\r
21 public class RBBIPerf extends PerfTest {
\r
23 String dataFileName;
\r
24 RuleBasedBreakIterator bi;
\r
25 BreakIterator jdkbi;
\r
28 public static void main(String[] args) throws Exception {
\r
29 new RBBIPerf().run(args);
\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
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
49 UTF16.append(testFileBuf, c);
\r
51 testString = testFileBuf.toString();
\r
53 catch (IOException e) {
\r
54 throw new RuntimeException(e.toString());
\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
69 bi.setText(testString);
\r
71 if (jdkbi != null) {
\r
72 jdkbi.setText(testString);
\r
79 PerfTest.Function testRBBINext() {
\r
80 return new PerfTest.Function() {
\r
82 public void call() {
\r
86 for (; n != BreakIterator.DONE; n=bi.next()) {
\r
90 for (; n != BreakIterator.DONE; n=jdkbi.next()) {
\r
96 public long getOperationsPerIteration() {
\r
100 for (n=bi.first(); n != BreakIterator.DONE; n=bi.next()) {
\r
104 for (n=jdkbi.first(); n != BreakIterator.DONE; n=jdkbi.next()) {
\r
114 PerfTest.Function testRBBIPrevious() {
\r
115 return new PerfTest.Function() {
\r
117 public void call() {
\r
120 for (n=bi.last(); n != BreakIterator.DONE; n=bi.previous()) {
\r
125 public long getOperationsPerIteration() {
\r
128 for (n=bi.last(); n != BreakIterator.DONE; n=bi.previous()) {
\r
137 PerfTest.Function testRBBIIsBoundary() {
\r
138 return new PerfTest.Function() {
\r
140 public void call() {
\r
141 int n=testString.length();
\r
143 for (i=0; i<n; i++) {
\r
148 public long getOperationsPerIteration() {
\r
149 int n = testString.length();
\r