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;