[ 
https://issues.apache.org/jira/browse/LUCENE-1604?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12698847#action_12698847
 ] 

Michael McCandless commented on LUCENE-1604:
--------------------------------------------

I completely agree it's silly to make huge arrays instead of accepting null.  
One turns off norms to avoid huge arrays getting allocated, in the first place.

Unfortunately, this is a break in back compatibility, though I think in 3.0 
this change would be OK.  Perhaps, we could commit it today, w/ a deprecated 
method exposed in IndexReader to "allow null to be returned by getNorms()", 
which defaults to off (ie the current trunk behavior).  Then, in 3.0, we remove 
that method and hardwire to true.

There is also a [presumably smallish] performance hit by adding the "norms != 
null" check inside TermScorer, for every hit, but I think that's an OK tradeoff.

> Stop creating huge arrays to represent the absense of field norms
> -----------------------------------------------------------------
>
>                 Key: LUCENE-1604
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1604
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: Index
>    Affects Versions: 2.9
>            Reporter: Shon Vella
>            Priority: Minor
>             Fix For: 2.9
>
>         Attachments: LUCENE-1604.patch
>
>
> Creating and keeping around huge arrays that hold a constant value is very 
> inefficient both from a heap usage standpoint and from a localility of 
> reference standpoint. It would be much more efficient to use null to 
> represent a missing norms table.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
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