lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Shon Vella (JIRA)" <j...@apache.org>
Subject [jira] Commented: (LUCENE-1604) Stop creating huge arrays to represent the absense of field norms
Date Tue, 14 Apr 2009 19:05:15 GMT

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

Shon Vella commented on LUCENE-1604:
------------------------------------

The check isn't for free because the HotSpot compiler doesn't check every reference for null,
it just traps the resulting segmentation fault that dereferencing a null pointer causes. We
could leverage this by not checking for null, but catch a null pointer exception, though I
believe the extra overhead of a try/catch block would be more expensive than just checking.

The performance hit is likely only in the case where it isn't equal null - in the equal null
case you end up saving a multiply plus a memory reference that is likely going to cause many
CPU cache faults over the coarse of a search long enough to matter, which together probably
add up to more than the cost of the check.

An alternate approach that would eliminate this overhead is to subclass the scorers that use
norms and create an appropriate scorer that doesn't require the check. The drawback of this
approach would be that it is harder to maintain.



> 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-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


Mime
View raw message