You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2024/05/14 13:16:41 UTC

(lucene) branch branch_9x updated: Remove unnecessary bit conversion for IndexSorter (#13320)

This is an automated email from the ASF dual-hosted git repository.

jpountz pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/lucene.git


The following commit(s) were added to refs/heads/branch_9x by this push:
     new b1470b945f9 Remove unnecessary bit conversion for IndexSorter (#13320)
b1470b945f9 is described below

commit b1470b945f91c5149816eedcd1774e26a3814c8b
Author: panguixin <pa...@bytedance.com>
AuthorDate: Tue May 14 21:05:51 2024 +0800

    Remove unnecessary bit conversion for IndexSorter (#13320)
---
 .../java/org/apache/lucene/index/IndexSorter.java  | 31 +++++++---------------
 1 file changed, 9 insertions(+), 22 deletions(-)

diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexSorter.java b/lucene/core/src/java/org/apache/lucene/index/IndexSorter.java
index 10fc196232d..6db379b9b22 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexSorter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexSorter.java
@@ -266,23 +266,16 @@ public interface IndexSorter {
     public ComparableProvider[] getComparableProviders(List<? extends LeafReader> readers)
         throws IOException {
       ComparableProvider[] providers = new ComparableProvider[readers.size()];
-      final float missingValue;
-      if (this.missingValue != null) {
-        missingValue = this.missingValue;
-      } else {
-        missingValue = 0.0f;
-      }
+      final int missValueBits = Float.floatToIntBits(missingValue != null ? missingValue : 0.0f);
 
       for (int readerIndex = 0; readerIndex < readers.size(); readerIndex++) {
         final NumericDocValues values = valuesProvider.get(readers.get(readerIndex));
 
         providers[readerIndex] =
             docID -> {
-              float value = missingValue;
-              if (values.advanceExact(docID)) {
-                value = Float.intBitsToFloat((int) values.longValue());
-              }
-              return NumericUtils.floatToSortableInt(value);
+              final int valueBits =
+                  values.advanceExact(docID) ? (int) values.longValue() : missValueBits;
+              return NumericUtils.sortableFloatBits(valueBits);
             };
       }
       return providers;
@@ -336,23 +329,17 @@ public interface IndexSorter {
     public ComparableProvider[] getComparableProviders(List<? extends LeafReader> readers)
         throws IOException {
       ComparableProvider[] providers = new ComparableProvider[readers.size()];
-      final double missingValue;
-      if (this.missingValue != null) {
-        missingValue = this.missingValue;
-      } else {
-        missingValue = 0.0f;
-      }
+      final long missingValueBits =
+          Double.doubleToLongBits(missingValue != null ? missingValue : 0.0f);
 
       for (int readerIndex = 0; readerIndex < readers.size(); readerIndex++) {
         final NumericDocValues values = valuesProvider.get(readers.get(readerIndex));
 
         providers[readerIndex] =
             docID -> {
-              double value = missingValue;
-              if (values.advanceExact(docID)) {
-                value = Double.longBitsToDouble(values.longValue());
-              }
-              return NumericUtils.doubleToSortableLong(value);
+              final long valueBits =
+                  values.advanceExact(docID) ? values.longValue() : missingValueBits;
+              return NumericUtils.sortableDoubleBits(valueBits);
             };
       }
       return providers;