-----------------------------------------------------------------------
Introduction
-----------------------------------------------------------------------

J2DBench is a  suite of benchmarks with a GUI front  end that lets you
analyze the  performance of many Java2D graphical  operations. You can
easily modify  the test  options, and save  them for later  runs using
GUI, or  load them in batch  mode to allow quick  testing on different
builds.   It  also  provides  logging  of  the  result,  to  make  the
comparison of the collected data easier.

J2DAnalyzer  is  J2DBench  a  results  analyzer/comparator  which  can
compare the results generated by the J2DBench runs.

XMLHTMLReporter is an additional tool  which can create an html report
from the results files generated by the J2DBench runs.

-----------------------------------------------------------------------
Minimum requirements
-----------------------------------------------------------------------

The benchmark requires at least jdk1.4 to compile and run. Note that
source/target is set to 1.6 in the makefile and build.xml, because of
support in jdk 9 compiler.

-----------------------------------------------------------------------
How To Compile
-----------------------------------------------------------------------

#> cd J2DBench

The benchmark can be compiled by using either ant:

#> ant

or gnumake (assuming there's 'javac' in the path):

#> gnumake

The jar files will be generated into J2DBench/dist directory.

Note that the workspace also contains Netbeans 4.0 project file:
  J2DBench/nbproject/project.xml
allowing it to be easily imported into Netbeans.

-----------------------------------------------------------------------
How To Run J2DBench, J2DAnalyzer, XMLHTMLReporter
-----------------------------------------------------------------------

#> ant run
  or
#> java -jar dist/J2DBench.jar

To get help page for each of the tools, run:
#> java -jar dist/J2DBench.jar -help
#> java -jar dist/J2DAnalyzer.jar -help
#> java -cp dist/J2DAnalyzer.jar j2dbench.report.XMLHTMLReporter -help

-----------------------------------------------------------------------
Using J2DBench GUI to Create Options File
-----------------------------------------------------------------------

There are global  options, options specific to a  group of benchmarks,
and benchmark-specific options.

Global  options affect all  groups of  benchmarks, group  options only
affect benchmarks in particular group, and benchmark-specific ones are
relevant to a single benchmark.

Examples of important global options:
  Calibration: 
    if the "Fixed Number of reps" is set to 0, J2DBench will calibrate
    each individual benchmark, meaning that it will determine how many
    repetitions each benchmark can perform in "Target Test Time", and
    use this number of repetitions for each Test Run.

    If "Fixed Number of reps" is non-0, each benchmark will be run for
    specified number  of repetitions.  The use of  Calibration mode is
    preferable because  the time per  operation can vary  widely among
    the various tests.

  Output Destinations: 
    where the benchmarks will render to.
    All selected  benchmarks will be repeated for each selected
    destination.

Example of benchmark group options:
TextBenchmarks/TextOptions/Graphics
  Text AntiAlias: 
    whether to use text antialiasing for text benchmarks

Example of a benchmark option:
Graphics Benchmarks/Imaging Benchmarks:
  Image Rendering Sources (for Imaging Benchmarks only): 
    the source image types used for testing

Example of a benchmark:
Graphics Benchmarks/Imaging Benchmarks/Image Rendering Tests:
  drawImage(img, tx, obs): 
    test the Graphics2D's
      drawImage(Image image, AffineTransform tx, ImageObserver obs)
    operation. 

General note: you can chose multiple options in some cases by holding
Shift or Ctrl key.

-----------------------------------------------------------------------
Use Scenario
-----------------------------------------------------------------------

Suppose you want to compare rendering performance of the default
and opengl pipelines.

Start J2DBench (assuming the current dir is J2DBench's top dir)
#> java -jar dist/J2DBench.jar

You can  either create and save  the option file  by selecting desired
tests and their attributes, or use one of the provided option files in
options/ directory (for example, default.opt, which is used below).

Note that it's very easy to  create an option file which would take an
extremely  long time  to  execute the  tests,  so be  be careful  when
choosing the options and benchmarks to run.

After the options file is created, start J2DBench in batch mode to run
the benchmarks for the default pipeline:
#> java -jar dist/J2DBench.jar -batch -loadopts options/default.opt \
     -saveres default.res -title "Rendering - Default ppl" \
     -desc "Rendering tests with the default pipeline"

This command  will run  the benchmarks defined  in options/default.opt
file and save the result in default.res file.

(You can also run selected tests directly from the GUI mode by hitting
"Run Tests" in the J2DBench dialog)

Now run the benchmark with opengl pipeline:
#> java -Dsun.java2d.opengl=True -jar dist/J2DBench.jar -batch \
     -loadopts options/default.opt \
     -saveres opengl.res -title "Rendering - OpenGL" \
     -desc "Rendering tests with OpenGL pipeline"

Now let's analyze the results using J2DAnalyzer:
#> java -jar dist/J2DAnalyzer.jar default.res opengl.res

Note that you can compare more than two sets of results, see
J2DAnalyzer's help page.

You can also generate html pages from the results files using
j2dbench.report.XMLHTMLReporter class in J2DAnalyzer.jar.  Suppose
generated pages are to be stored in html_results directory.

First, make sure html_results/testcases directory exists:
#> mkdir -p html_results/testcases

Then generate the report:
#> java -cp J2DAnalyzer.jar j2dbench.report.XMLHTMLReporter \
     -r html_results -b default.res -t opengl.res

The html report will be generated in html_results/ directory.
The index page:
  html_results/Summary_Report.html
