/// <summary> /// Sort a single partition in-memory. </summary> private FileInfo SortPartition(/*int len*/) // LUCENENET NOTE: made private, since protected is not valid in a sealed class. Also eliminated unused parameter. { var data = this.buffer; FileInfo tempFile = FileSupport.CreateTempFile("sort", "partition", DefaultTempDir()); long start = Environment.TickCount; sortInfo.SortTime += (Environment.TickCount - start); using (var @out = new ByteSequencesWriter(tempFile)) { IBytesRefEnumerator iter = buffer.GetEnumerator(comparer); while (iter.MoveNext()) { if (Debugging.AssertsEnabled) { Debugging.Assert(iter.Current.Length <= ushort.MaxValue); } @out.Write(iter.Current); } } // Clean up the buffer for the next partition. data.Clear(); return(tempFile); }
/// <summary> /// Sort a single partition in-memory. </summary> private FileInfo SortPartition(/*int len*/) // LUCENENET NOTE: made private, since protected is not valid in a sealed class. Also eliminated unused parameter. { var data = this.buffer; FileInfo tempFile = FileSupport.CreateTempFile("sort", "partition", DefaultTempDir()); long start = J2N.Time.NanoTime() / J2N.Time.MillisecondsPerNanosecond; // LUCENENET: Use NanoTime() rather than CurrentTimeMilliseconds() for more accurate/reliable results sortInfo.SortTime += ((J2N.Time.NanoTime() / J2N.Time.MillisecondsPerNanosecond) - start); // LUCENENET: Use NanoTime() rather than CurrentTimeMilliseconds() for more accurate/reliable results using (var @out = new ByteSequencesWriter(tempFile)) { IBytesRefEnumerator iter = buffer.GetEnumerator(comparer); while (iter.MoveNext()) { if (Debugging.AssertsEnabled) { Debugging.Assert(iter.Current.Length <= ushort.MaxValue); } @out.Write(iter.Current); } } // Clean up the buffer for the next partition. data.Clear(); return(tempFile); }
public virtual void TestAppendIterator() { Random random = Random; BytesRefArray list = new BytesRefArray(Util.Counter.NewCounter()); IList <string> stringList = new JCG.List <string>(); for (int j = 0; j < 2; j++) { if (j > 0 && random.NextBoolean()) { list.Clear(); stringList.Clear(); } int entries = AtLeast(500); BytesRef spare = new BytesRef(); int initSize = list.Length; for (int i = 0; i < entries; i++) { string randomRealisticUnicodeString = TestUtil.RandomRealisticUnicodeString(random); spare.CopyChars(randomRealisticUnicodeString); Assert.AreEqual(i + initSize, list.Append(spare)); stringList.Add(randomRealisticUnicodeString); } for (int i = 0; i < entries; i++) { Assert.IsNotNull(list.Get(spare, i)); Assert.AreEqual(stringList[i], spare.Utf8ToString(), "entry " + i + " doesn't match"); } // check random for (int i = 0; i < entries; i++) { int e = random.Next(entries); Assert.IsNotNull(list.Get(spare, e)); Assert.AreEqual(stringList[e], spare.Utf8ToString(), "entry " + i + " doesn't match"); } for (int i = 0; i < 2; i++) { IBytesRefEnumerator iterator = list.GetEnumerator(); foreach (string @string in stringList) { Assert.IsTrue(iterator.MoveNext()); Assert.AreEqual(@string, iterator.Current.Utf8ToString()); } } } }
public virtual void TestSort() { Random random = Random; BytesRefArray list = new BytesRefArray(Util.Counter.NewCounter()); IList <string> stringList = new JCG.List <string>(); for (int j = 0; j < 2; j++) { if (j > 0 && random.NextBoolean()) { list.Clear(); stringList.Clear(); } int entries = AtLeast(500); BytesRef spare = new BytesRef(); int initSize = list.Length; for (int i = 0; i < entries; i++) { string randomRealisticUnicodeString = TestUtil.RandomRealisticUnicodeString(random); spare.CopyChars(randomRealisticUnicodeString); Assert.AreEqual(initSize + i, list.Append(spare)); stringList.Add(randomRealisticUnicodeString); } // LUCENENET NOTE: Must sort using ArrayUtil.GetNaturalComparator<T>() // to ensure culture isn't taken into consideration during the sort, // which will match the sort order of BytesRef.UTF8SortedAsUTF16Comparer. CollectionUtil.TimSort(stringList); #pragma warning disable 612, 618 IBytesRefEnumerator iter = list.GetEnumerator(BytesRef.UTF8SortedAsUTF16Comparer); #pragma warning restore 612, 618 int a = 0; while (iter.MoveNext()) { Assert.AreEqual(stringList[a], iter.Current.Utf8ToString(), "entry " + a + " doesn't match"); a++; } Assert.IsFalse(iter.MoveNext()); Assert.AreEqual(a, stringList.Count); } }