| java.lang.Object com.ibm.icu.dev.test.perf.PerfTest
All known Subclasses: com.ibm.icu.dev.test.perf.UCharacterPerf, com.ibm.icu.dev.test.perf.RBBIPerf, com.ibm.icu.dev.test.perf.ResourceBundlePerf, com.ibm.icu.dev.test.perf.NormalizerPerformanceTest, com.ibm.icu.dev.test.perf.UnicodeSetPerf,
PerfTest | abstract public class PerfTest (Code) | | Base class for performance testing framework. To use, the subclass can simply
define one or more instance methods with names beginning with "test" (case
ignored). The prototype of the method is
PerfTest.Function testTheName()
The actual performance test will execute on the returned Commond object
(refer to Command Pattern). To call a test from command line, the 'test'
prefix of the test method name can be ignored/removed.
In addition, the subclass should define a main() method that calls
PerfTest.run() as defined here.
If the subclasses uses any command line arguments (beyond those handled
automatically by this calss) then it should override PerfTest.setup() to
handle its arguments. If the subclasse needs more sophisticated management
for controlling finding/calling test method, it can replace the default
implementation for PerfTest.testProvider before calling PerfTest.run().
Example invocation: java -cp classes -verbose:gc
com.ibm.icu.dev.test.perf.UnicodeSetPerf --gc --passes 4 --iterations 100
UnicodeSetAdd [[:l:][:c:]]
Example output: [GC 511K->192K(1984K), 0.0086170 secs] [GC 704K->353K(1984K),
0.0059619 secs] [Full GC 618K->371K(1984K), 0.0242779 secs] [Full GC
371K->371K(1984K), 0.0228649 secs] = testUnicodeSetAdd begin 100 =
testUnicodeSetAdd end 11977 1109044 = testUnicodeSetAdd begin 100 =
testUnicodeSetAdd end 12047 1109044 = testUnicodeSetAdd begin 100 =
testUnicodeSetAdd end 11987 1109044 = testUnicodeSetAdd begin 100 =
testUnicodeSetAdd end 11978 1109044
The [] lines are emitted by the JVM as a result of the -verbose:gc switch.
Lines beginning with '=' are emitted by PerfTest: = testUnicodeSetAdd begin
100 A 'begin' statement contains the name of the setup method, which
determines what test function is measures, and the number of iterations that
will be times. = testUnicodeSetAdd end 12047 1109044 An 'end' statement gives
the name of the setup method again, and then two integers. The first is the
total elapsed time in milliseconds, and the second is the number of events
per iteration. In this example, the time per event is 12047 / (100 * 1109044)
or 108.6 ns/event.
Raw times are given as integer ms, because this is what the system measures.
author: Alan Liu since: ICU 2.4 |
Inner Class :static interface TestCmdProvider | |
Inner Class :static class TestPrefixProvider implements TestCmdProvider | |
Inner Class :abstract public static class Function | |
Inner Class :public static class UsageException extends Exception | |
Constructor Summary | |
protected | PerfTest() Constructor. |
BULK_MODE | final static int BULK_MODE(Code) | | |
ENCODING | final static int ENCODING(Code) | | |
FILE_NAME | final static int FILE_NAME(Code) | | |
GARBAGE_COLLECT | final static int GARBAGE_COLLECT(Code) | | |
HELP1 | final static int HELP1(Code) | | These must be kept in sync with getOptions().
|
HELP2 | final static int HELP2(Code) | | |
ITERATIONS | final static int ITERATIONS(Code) | | |
LINE_MODE | final static int LINE_MODE(Code) | | |
LIST | final static int LIST(Code) | | |
LOCALE | final static int LOCALE(Code) | | |
PASSES | final static int PASSES(Code) | | |
SOURCEDIR | final static int SOURCEDIR(Code) | | |
TIME | final static int TIME(Code) | | |
USELEN | final static int USELEN(Code) | | |
VERBOSE | final static int VERBOSE(Code) | | |
bulk_mode | protected boolean bulk_mode(Code) | | |
doPriorGC | protected boolean doPriorGC(Code) | | |
iterations | protected int iterations(Code) | | |
line_mode | protected boolean line_mode(Code) | | |
passes | protected int passes(Code) | | |
testProvider | protected TestCmdProvider testProvider(Code) | | |
uselen | protected boolean uselen(Code) | | |
verbose | protected boolean verbose(Code) | | |
PerfTest | protected PerfTest()(Code) | | Constructor.
|
gc | protected void gc()(Code) | | Invoke the runtime's garbage collection procedure repeatedly
until the amount of free memory stabilizes to within 10%.
|
run | final protected void run(String[] args) throws Exception(Code) | | Subclasses should call this method in their main(). run() will
in turn call setup() with any arguments it does not parse.
This method parses the command line and runs the tests given on
the command line, with the given parameters. See the class
description for details.
|
setup | protected void setup(String[] args)(Code) | | Framework method. Default implementation does not parse any
extra arguments. Subclasses may override this to parse extra
arguments. Subclass implementations should NOT call the base
class implementation.
|
|
|