In that case it is better to keep the mechanism of throwing an exeption to
stop a search. I was just thinking about the collector api and how Anne's
change would look.

On 7 September 2011 15:49, Uwe Schindler <u...@thetaphi.de> wrote:

> ** ...but slower, as you have to check the return value millions of times.
> For this type of early exit conditions, exceptions are better, as they only
> change control flow if they are throwed. If you preallocate the exception,
> the time for fill-in stack trace is minimized. With Java 7 throwable has new
> ctor to prevent this without reusing.
> --
> Uwe Schindler
> H.-H.-Meier-Allee 63, 28213 Bremen
> http://www.thetaphi.de
>
>
>
> Martijn v Groningen <martijn.v.gronin...@gmail.com> schrieb:
>
>> I think that a boolean or enum as return value is neater (api wise) than
>> throwing an expection.
>>
>> On 7 September 2011 15:34, Anne Veling <a...@beyondtrees.com> wrote:
>>
>>> Yes, I saw that. I would expect that to be slower. It also would not
>>> always work as expected if the collector would be combined in a booleanquery
>>> I guess.
>>>
>>> Anne n
>>>
>>>
>>> On Wed, Sep 7, 2011 at 15:29, Robert Muir <rcm...@gmail.com> wrote:
>>>
>>>> On Wed, Sep 7, 2011 at 9:09 AM, Anne Veling <a...@beyondtrees.com>
>>>> wrote:
>>>> > Ah thanks. I will make the change, ensure all tests are succeeding,
>>>> add some
>>>> > tests of my own, and commit a patch. Would be great to get a feeling
>>>> of the
>>>> > performance impact.
>>>> > The change I'm making is changing the Collector interface from
>>>> > public void collect(int doc) to
>>>> > public boolean collect(int doc)
>>>> > With a default "false" return code. If a collector returns "true" the
>>>> caller
>>>> > may stop collecting. So all normal collectors would simply return
>>>> "false".
>>>> > This could introduce some performance overhead of adding a return
>>>> value to
>>>> > the call stack, and some checking in the calling code.
>>>> > However, for some other use cases, like
>>>> >
>>>>
>>>> usually the trick here to stop collecting is to throw a
>>>> runtimeexception (your own subclass that you can catch), like
>>>> timelimitingcollector.
>>>>
>>>> --
>>>> lucidimagination.com
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
>>>> For additional commands, e-mail: dev-h...@lucene.apache.org
>>>>
>>>>
>>>
>>>
>>> --
>>> Anne Veling
>>> BeyondTrees.com
>>> +31 6 50 969 170
>>> @anneveling
>>>
>>>
>>
>>
>> --
>> Met vriendelijke groet,
>>
>> Martijn van Groningen
>>
>


-- 
Met vriendelijke groet,

Martijn van Groningen

Reply via email to