"filcorr-offline-perf-bench.jar" is based on the JMH testing framework; it is used for benchmarking the offline performance of the FilCorr algorithm.
Since FilCorr is data-independent, so we use random synthetic data generated automatically by the program based on the user inputs.
The result is the time interval between the moment of the program starts loading the input data and the moment of finishing the computation. We pre-set the first two runs as warmup and the following eight runs as benchmark, and the final result is the average time of the eight runs.
Note: The usage of each paramete and their default values can be checked in the program with input argument -help
print help info
-help
algorithm to compute the lagged correlation
-algo
number of time-series;
-seriesNum
number of observations per time-series;
-seriesLen
maximum number of pairs will be generated;
-maxPair
window length;
-n
lag length;
-l
sampling rate;
-f
lower cutoff frequency of band pass filter;
-fs
higher cutoff frequency of band pass filter;
-ft
step length;
-step
number of thread to work;
-threadNum
show running detail(no arguments followed)
-v
Note: If user turn on this option by inputing -v then then all the running detail will be printed in the console and no results will be saved in the local file since user can rediret the results to a file in terminal.
Otherwise the results are saved in a folder named "offline-perf-results" in the same director of the jar file.
java -Xms28g -Xmx28g -Xmn23g -XX:+UseParallelGC -jar ./filcorr-offline-perf-bench.jar -seriesLen 2000 -seriesNum 1200 -n 500 -l 250 -f 100 -fs 1 -ft 10 -step 20 -algo filcorr -threadNum 6
explain: The program will generate random synthetic data for the 1200 time-series, each time-series will contain 2000 observations;
For the FilCorr, the length of basic window is 500 observations since the lag is 250 observations, so the length of the sliding window is n + l = 750 observations. Step length is 20 observations which means the sliding window will move forward by 20 observations for each step.
-f 100 means the observations are generated at 100Hz, -fs 1 -ft 10 means the bandwidth for the bandpass filter is from 1Hz to 10Hz.
-algo filcorr means we use FilCorr to compute instead of Naive.
-threadNum 6 means there will be 6 threads created for computation.
System info:
OS: Pop!_OS 20.04 LTS
CPU: intel i9-9900k@4.70GHz,
Ram: 32GB ddr4 ram 3200MHz ; Timing: 14-14-14-34
Java version: openjdk version "1.8.0_252"; OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1ubuntu1-b09)
Jvm config: -Xms28g -Xmx28g -Xmn23g -XX:+UseParallelGC.
Note: Users should adjust the heap size accordingly based on the ram availablity.