| /* |
| ********************************************************************** |
| * Copyright (c) 2002-2004, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| ********************************************************************** |
| */ |
| package com.ibm.icu.dev.test.perf; |
| import com.ibm.icu.text.*; |
| import java.util.HashSet; |
| import java.io.FileInputStream; |
| import java.io.InputStream; |
| import java.io.InputStreamReader; |
| import java.io.IOException; |
| |
| /** |
| * A class for testing UnicodeSet performance. |
| * |
| * @author Alan Liu |
| * @since ICU 2.4 |
| */ |
| public class RBBIPerf extends PerfTest { |
| |
| String dataFileName; |
| RuleBasedBreakIterator bi; |
| String testString; |
| |
| public static void main(String[] args) throws Exception { |
| new RBBIPerf().run(args); |
| } |
| |
| protected void setup(String[] args) { |
| // We only take one argument, the pattern |
| if (args.length != 1) { |
| throw new RuntimeException("Please supply utf-8 encoded text data file"); |
| } |
| |
| try { |
| dataFileName = args[0]; |
| StringBuffer testFileBuf = new StringBuffer(); |
| InputStream is = new FileInputStream(dataFileName); |
| InputStreamReader isr = new InputStreamReader(is, "UTF-8"); |
| int c; |
| for (;;) { |
| c = isr.read(); |
| if (c < 0) { |
| break; |
| } |
| UTF16.append(testFileBuf, c); |
| } |
| testString = testFileBuf.toString(); |
| } |
| catch (IOException e) { |
| throw new RuntimeException(e.toString()); |
| } |
| |
| bi = (RuleBasedBreakIterator)BreakIterator.getLineInstance(); |
| bi.setText(testString); |
| |
| } |
| |
| |
| |
| PerfTest.Function testRBBINext() { |
| return new PerfTest.Function() { |
| |
| public void call() { |
| bi.first(); |
| int n=0; |
| for (n=bi.first(); n != BreakIterator.DONE; n=bi.next()) { |
| } |
| } |
| |
| |
| public long getOperationsPerIteration() { |
| int n; |
| int count = 0; |
| for (n=bi.first(); n != BreakIterator.DONE; n=bi.next()) { |
| count++; |
| } |
| System.out.println(count); |
| return count; |
| } |
| }; |
| } |
| |
| |
| PerfTest.Function testRBBIPrevious() { |
| return new PerfTest.Function() { |
| |
| public void call() { |
| bi.first(); |
| int n=0; |
| for (n=bi.last(); n != BreakIterator.DONE; n=bi.previous()) { |
| } |
| } |
| |
| |
| public long getOperationsPerIteration() { |
| int n; |
| int count = 0; |
| for (n=bi.last(); n != BreakIterator.DONE; n=bi.previous()) { |
| count++; |
| } |
| System.out.println(count); |
| return count; |
| } |
| }; |
| } |
| |
| |
| |
| } |