All lambdas execution performance are now improved and also an option for running custom Java code in BlazeMeter is provided!
Charts show total test plan execution time in milliseconds for the given number of threads and iterations.
For the biggest test (500 threads and 10k iterations each) we got at last test 34x less time difference for post processors from base test comparing 1.14 to 1.13, and 20x for conditions.
Tests were ran in MacBook Pro, 2.6GHz 6-Core Intel Core i7, 16GB, OpenJDK 1.8.0_352.
Performance Comparison Details
Post Processor Tests
Base
testPlan(
threadGroup(threads, iterations,
dummySampler("OK")
)
)
Groovy
testPlan(
threadGroup(threads, iterations,
dummySampler("OK"),
jsr223PostProcessor("vars.putObject(\"TEST\", 1 + 1)")
)
)
Jexl
testPlan(
threadGroup(threads, iterations,
dummySampler("OK"),
jsr223PostProcessor("vars.putObject(\"TEST\", 1 + 1)")
.language("jexl")
)
)
Lambda 1.13 & 1.14
testPlan(
threadGroup(threads, iterations,
dummySampler("OK"),
jsr223PostProcessor(s -> s.vars.putObject("TEST", 1 + 1))
)
)
Condition Tests
Base
testPlan(
threadGroup(threads, iterations,
dummySampler("OK")
)
)
Constant
testPlan(
threadGroup(threads, iterations,
ifController("true",
dummySampler("OK")
)
)
)
Groovy
testPlan(
threadGroup(threads, iterations,
ifController("${__groovy(vars.get('test')==null)}",
dummySampler("OK")
)
)
)
Jexl
testPlan(
threadGroup(threads, iterations,
ifController("${__jexl2(vars.get('test')==null)}",
dummySampler("OK")
)
)
)
Lambda 1.13 & 14
testPlan(
threadGroup(threads, iterations,
ifController(s -> s.vars.get("test")==null,
dummySampler("OK")
)
)
)
And here is a new user guide section with instructions to run lambda tests with BlazeMeterEngine
and standalone JMeter.
Thanks to radek (from discord channel) and @polarnik for pointing out the performance penalties Java lambdas had and @cspriya for asking about running java code in BlazeMeter.
Additionally, thanks to @mikeliucc for pointing out a typo that we fixed in this release.