Btw...
> On 2. Nov 2020, at 22:16, Mario Juric <[email protected]> wrote:
>
> jCas.select(annotationType).coveredBy(annotation)
I did some local speed measurements and in particular for the "coveredBy"
selector,
SelectFS is presently a good deal slower than the uimaFIT equivalent. I didn't
look
into speeding up SelectFS.coveredBy yet, but for the moment, you just might
want to
stick with the uimaFIT version of selectCovered.
There is a "benchmark" module in the uimaFIT source repo which contains a few
tentative
performance measurements.
==================
JCas selectCovered (using uimaFIT JCasUtil.select and selectCovered)
==================
new Benchmark("JCas selectCovered", template)
.measure(() -> select(jcas, Sentence.class).forEach(s ->
selectCovered(Token.class, s)))
.run();
Running benchmark... 10 100 1000 10000
[ 10/ 20: min: 0 max: 2 median: 0 fail: 0 ]
[ 100/ 20: min: 0 max: 1 median: 0 fail: 0 ]
[ 1000/ 20: min: 4 max: 25 median: 5 fail: 0 ]
[ 10000/ 20: min: 170 max: 696 median: 193 fail: 0 ]
The 10, 100, 1000, etc are the numbers of annotations in the CAS (randomly
generated Tokens/Sentences).
The 20 indicates how often the given lambda was measured.
=====================
JCas select.coveredBy v3 (using SelectFS select and coveredBy)
=====================
new Benchmark("JCas select.coveredBy v3", template)
.measure(() -> {
jcas.select(Sentence.class).forEach(s ->
jcas.select(Token.class).coveredBy(s).forEach(t -> {}));
})
.run();
Running benchmark... 10 100 1000 10000
[ 10/ 20: min: 0 max: 4 median: 0 fail: 0 ]
[ 100/ 20: min: 1 max: 45 median: 2 fail: 0 ]
[ 1000/ 20: min: 15 max: 87 median: 24 fail: 0 ]
[ 10000/ 20: min: 862 max: 2919 median: 1310 fail: 0 ]
These numbers are from my local branches. The code in the master branches might
behave slightly differently.
Cheers,
-- Richard