To compile all components call "ant" in the base directory of the project.
If it runs with errors after some changes, it may be wise to try "ant clean" to
be sure all components will be updated.
To run whole application use
runApp.sh classpath main-class [params]
where classpath is list of paths separated by colon, main-class is the class
which should be launched followed by optional number of parameters of launched
To run client and server side of the measuring separately use
first to launch controlling server and then call
runClient.sh classpath main-class [params]
to run the measured application.
Other scripts runClientOnly.sh and runServerOnly.sh are shared by both ways of
running and should not be called directly.
When custom argument size processor is used it is needed to set path to its JAR
file in PROCESSOR_JAR environment variable.
To get all necessary files at once use "ant dist" command which will copy all
libraries into dist/lib folder and run scripts into dist folder.
This ant target also creates new empty instr.task file where measuring tasks
may be written and copies default server configuration to the splserver.ini
In this folder it is possible to use runExample.sh script to launch desired
application and all paths are set to the lib folder so it is possible to just
copy content of the dist folder to your application base directory and use
runExample.sh script to launch your application where only classpath and main
class is needed to add as an argument of the script.
It may be needed to add execute permission to all scripts in the dist directory
if Permission denied error occurs.
Client is runned by Launcher and can be configured with different sleep time
between cycles, port used to connect with server and maximal number of
measurements done for a single method.
They can be set by system properties for Java:
spl.client.port sets the port
spl.client.sleep sets the sleep time in milliseconds
spl.client.measurements sets the maximal number of measurements
If nothing is set the default values are:
port = 38692
sleep = 100
measurements = 10000
Server is configured by its configuration file. The file default path is:
Other file can be configured by setting system property:
If no configuration file is found, then default configuration is used. These
values can be seen in file
This file is only informative and is not used for the configuration.
To specify which methods should be measured it is needed to specify them in the
task file. This file default name (can be changed in server configuration) is
There is list of methods to be measured (for measurement run mode) or list of
comparisons to be evaluated (for comparison run mode).
Methods for measuring are specified as a list of methods separated by a new
line. The method is specified by its class name including packages separated by
slash (inner class is separated by dollar sign), followed by dot and method
name (or <init> for constructor) and at the end its descriptor is added.
For example method
int compareTo(Integer anotherInteger)
of the class
is specified as
Argument size processor can be optionally specified after the method
specification by adding comma and processor's class name including its package
separated by dots after the method specification. Whole line may look like this
pkg/MethodClass.method descriptor, pkg.ProcessorClass
Comparison of two methods should be specified on each line when this mode is
used. Comparison is described by left method specification optionally with
argument size processor followed by comparison sign (<, <=, =, >=, >), then
optional multiplication expression can be used and right method specification
optionally with argument size processor is placed at the end.
Multiplication expression is specified as two double values in a parenthesis
separated by comma.
Whole line may look like this
leftMethod sign (leftExpression, rightExpression) rightMethod
Java version 1.7 is required. Version 1.8 is not supported, but recompiling
DiSL sources (version 1.0-RC4) may help.
Verification - if there is problem with running application client when java
complaints about java.lang.VerifyError it may help to add parameter
as a JVM option.