Stellar Benchmarks
A microbenchmarking utility is included to assist in executing microbenchmarks for Stellar functions.
The utility can be executed via maven using the `exec` plugin, like so, from the `metron-common` directory:
mvn -DskipTests clean package && \ mvn exec:java -Dexec.mainClass="org.apache.metron.common.stellar.benchmark.StellarMicrobenchmark" -Dexec.args="..."
where exec.args can be one of the following:
-e,--expressions <FILE> Stellar expressions
-h,--help Generate Help screen
-n,--num_times <NUM> Number of times to run per expression (after
warmup). Default: 1000
-o,--output <FILE> File to write output.
-p,--percentiles <NUM> Percentiles to calculate per run. Default:
50.0,75.0,95.0,99.0
-v,--variables <FILE> File containing a JSON Map of variables to use
-w,--warmup <NUM> Number of times for warmup per expression.
Default: 100
For instance, to run with a set of Stellar expression in file
/tmp/expressions.txt:
```
# simple functions
TO_UPPER('john')
TO_LOWER(name)
# math functions
1 + 2*(3 + int_num) / 10.0
1.5 + 2*(3 + double_num) / 10.0
# conditionals
if ('foo' in ['foo']) OR one == very_nearly_one then 'one' else 'two'
1 + 2*(3 + int_num) / 10.0
#Network funcs
DOMAIN_TO_TLD(domain)
DOMAIN_REMOVE_SUBDOMAINS(domain)
And variables in file /tmp/variables.json:
{
"name" : "john",
"int_num" : 1,
"double_num" : 17.5,
"one" : 1,
"very_nearly_one" : 1.000001,
"domain" : "www.google.com"
}
Written to file /tmp/output.txt would be the following command:
mvn -DskipTests clean package && \ mvn exec:java -Dexec.mainClass="org.apache.metron.common.stellar.benchmark.StellarMicrobenchmark" \ -Dexec.args="-e /tmp/expressions.txt -v /tmp/variables.json -o ./output.json"

