You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2020/01/08 08:35:14 UTC
[lucenenet] 05/06: Lucene.Net.Index.BaseCompositeReader: Eliminated
unnecessary O(n + n) operation and cast
This is an automated email from the ASF dual-hosted git repository.
nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git
commit 6a7b255eb8f81c771bd7885bcf041f3c76b82b5c
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Tue Jan 7 21:49:21 2020 +0700
Lucene.Net.Index.BaseCompositeReader: Eliminated unnecessary O(n + n) operation and cast
---
src/Lucene.Net/Index/BaseCompositeReader.cs | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/Lucene.Net/Index/BaseCompositeReader.cs b/src/Lucene.Net/Index/BaseCompositeReader.cs
index 90da6c8..ff6ef78 100644
--- a/src/Lucene.Net/Index/BaseCompositeReader.cs
+++ b/src/Lucene.Net/Index/BaseCompositeReader.cs
@@ -1,6 +1,6 @@
+using J2N.Collections;
using System;
using System.Collections.Generic;
-using System.Linq;
namespace Lucene.Net.Index
{
@@ -59,7 +59,7 @@ namespace Lucene.Net.Index
/// List view solely for <see cref="GetSequentialSubReaders()"/>,
/// for effectiveness the array is used internally.
/// </summary>
- private readonly IList<R> subReadersList;
+ private readonly IList<IndexReader> subReadersList; // LUCENENET: Changed from IList<R> to IList<IndexReader> to eliminate casting
/// <summary>
/// Constructs a <see cref="BaseCompositeReader{R}"/> on the given <paramref name="subReaders"/>. </summary>
@@ -71,7 +71,13 @@ namespace Lucene.Net.Index
protected BaseCompositeReader(R[] subReaders)
{
this.subReaders = subReaders;
- this.subReadersList = subReaders.ToList();// Collections.unmodifiableList(Arrays.asList(subReaders));
+
+ // LUCENENET: To eliminate casting, we create the list explicitly
+ var subReadersList = new List<IndexReader>(subReaders.Length);
+ for (int i = 0; i < subReaders.Length; i++)
+ subReadersList.Add(subReaders[i]);
+ this.subReadersList = subReadersList.ToUnmodifiableList();
+
starts = new int[subReaders.Length + 1]; // build starts array
int maxDoc = 0, numDocs = 0;
for (int i = 0; i < subReaders.Length; i++)
@@ -222,7 +228,7 @@ namespace Lucene.Net.Index
protected internal override sealed IList<IndexReader> GetSequentialSubReaders()
{
- return subReadersList.Cast<IndexReader>().ToList();
+ return subReadersList;
}
}
}
\ No newline at end of file