Copyright (C) 2016 and later: Unicode, Inc. and others.
License & terms of use: http://www.unicode.org/copyright.html

Copyright (C) 2008-2013, International Business Machines
Corporation and others.  All Rights Reserved.

README for ICU4C Performance Test

Introduction:
The performance tests in ICU4C compares various aspects of ICU against previous versions of ICU,
Posix, and/or Windows.  Some tests only run on Windows and are labeled accordingly.All of the 
performance tests are driven by a perl-based script which calls the underlying C program and 
displays the statistical analysis of the test in an easy to read HTML web page.  Each test will
have its own web page.


Requirements:
The most up to date tests are in ICU 4.0 and later. In addition, most tests depend on data which are 
in a separate repository.

Data repository:
http://source.icu-project.org/repos/icu/data/trunk/test/perf
There are 3 folders in here: collation, conversion, and udr.


Running Performance Test:

1) Checkout the current ICU and 2 previous versions (for proper regression testing) and the data
   into your local system.

2) Do a general build on all the ICUs either through Visual Studios or with the Makefile.

3) Build the ICU performance tests either through Visual Studios or with the Makefile.
   (The location of the performance test is: icu/source/test/perf)

4) Go to perf/perldriver, copy Common.pl.template to Common.pl.
   In this file, you will need to set a few variables:
   a) ICU version numbers
   b) Path to the performance test data
   c) Path to the root directory of the different versions of ICU
   d) Whether or not you are running the test on Windows
   * The Path needs to be absolute
   * All other variables should be left as is

5) Create a directory pref/results. All of the test result web pages will be
   stored in this directory.

6) In the perf directory, there are several other directories for the various tests that can be run.
   (e.g. convperf (Conversion tests)). Go to each directory and execute the perl script for each test
   you want to run. (e.g. CharPerf_r.pl in CharPerf directory)
   * You only need to run the perl script from the latest ICU version.  The corresponding perl script 
     in the previous versions of ICU do not need to be run seperately.


Note: When running on Windows, cygwin is preferred.
Note: If a test needs to be run on Windows, a message will be displayed.
Note: After building the performance tests, it is a good idea to execute each C program to ensure that each
      test can run. (e.g. convperf.exe)
Note: To run the actual performance test, you will need to setup Perl with the following modules:
      a) Statistics/Distribution.pm
      b) Statistics/Descriptive.pm 
Note: Some tests take a while depending on the machine it is running on so a script to run each performance test's
      perl script might be helpful.
Note: The perl script is only used in one version of ICU. When you run regression tests,
      it is recommended to run the tests from the later version of ICU.
