Yah that's a fun one... keep prompting!

I just committed some comments around the +1 so the future "we"
"remember" why it's there...

Mike

On Sun, Dec 6, 2009 at 7:27 PM, Erick Erickson <erickerick...@gmail.com> wrote:
> Should have mentioned in my first message that all I
> was really after was prompting folks who actually know
> something about the code in question to avoid
> the mistake I've made, oh, several thousand times...
>
> "There's no reason for that to be there, I'll just take
> it out" <G>....
>
> Erick
>
> On Sun, Dec 6, 2009 at 6:45 PM, Michael McCandless
> <luc...@mikemccandless.com> wrote:
>>
>> On Sun, Dec 6, 2009 at 5:51 PM, Uwe Schindler <u...@thetaphi.de> wrote:
>> >> On Sun, Dec 06, 2009 at 05:31:53PM -0500, Erick Erickson wrote:
>> >> > This may be a silly question, and I admit that I haven't looked a the
>> >> code,
>> >> > but was there a good reason to +1 it in the first place or was that
>> >> > just
>> >> > paranoia to prevent off-by-one errors?
>> >>
>> >> IIRC, this implementation of the priority queue algo leaves open slot 0
>> >> to
>> >> simplify internal calculations.  It was that way when I ported 1.4.3,
>> >> and
>> >> I
>> >> doubt that's changed.
>> >
>> > Thats still the same. Because calculations in heaps are simplier when
>> > 1-based. Because of that heap[0] is unused.
>>
>> Thanks for raising this Erick... it's a good question.  Technically,
>> removing the +1 would be a bug if anyone ever inserted 2B items into
>> the PQ, but I think this is exceptionally unlikely to occur in
>> practice.
>>
>> >> > If there *was* a valid reason, might it make sense to
>> >> > +1 min(nDocs, maxDoc())?
>> >>
>> >> I think the patch is fine.  It's really only needed to provide a more
>> >> accurate
>> >> error message in the event somebody specifies that they want
>> >> Integer.MAX_VALUE
>> >> elements, not realizing that they will be allocated up front rather
>> >> than
>> >> lazily -- they'll get an OOME rather than a NegativeArraySizeException.
>> >
>> > The new patch is more intelligent, it will not allocate such a big queue
>> > as
>> > far as I have seen. It takes the numDocs() of index reader/searcher into
>> > account.
>>
>> Hmm actually it takes maxDoc() into account, but it should in fact use
>> numDocs().  I'll fix.
>>
>> Mike
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
>> For additional commands, e-mail: java-dev-h...@lucene.apache.org
>>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

Reply via email to