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 3a93fd1da5c7e7765c29a0c63011db7083cdccfa Author: Shad Storhaug <[email protected]> AuthorDate: Sat Jul 18 01:06:05 2020 +0700 PERFORMANCE: Lucene.Net.Index.DocumentsWriterFlushQueue: Replaced FlushTicket LinkedList with a Queue --- src/Lucene.Net/Index/DocumentsWriterFlushQueue.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Lucene.Net/Index/DocumentsWriterFlushQueue.cs b/src/Lucene.Net/Index/DocumentsWriterFlushQueue.cs index 124ac22..277eca4 100644 --- a/src/Lucene.Net/Index/DocumentsWriterFlushQueue.cs +++ b/src/Lucene.Net/Index/DocumentsWriterFlushQueue.cs @@ -29,7 +29,7 @@ namespace Lucene.Net.Index /// </summary> internal class DocumentsWriterFlushQueue { - private readonly LinkedList<FlushTicket> queue = new LinkedList<FlushTicket>(); + private readonly Queue<FlushTicket> queue = new Queue<FlushTicket>(); // we track tickets separately since count must be present even before the ticket is // constructed ie. queue.size would not reflect it. @@ -46,7 +46,7 @@ namespace Lucene.Net.Index bool success = false; try { - queue.AddLast(new GlobalDeletesTicket(deleteQueue.FreezeGlobalBuffer(null))); + queue.Enqueue(new GlobalDeletesTicket(deleteQueue.FreezeGlobalBuffer(null))); success = true; } finally @@ -83,7 +83,7 @@ namespace Lucene.Net.Index { // prepare flush freezes the global deletes - do in synced block! SegmentFlushTicket ticket = new SegmentFlushTicket(dwpt.PrepareFlush()); - queue.AddLast(ticket); + queue.Enqueue(ticket); success = true; return ticket; } @@ -135,7 +135,7 @@ namespace Lucene.Net.Index bool canPublish; lock (this) { - head = queue.Count <= 0 ? null : queue.First.Value; + head = queue.Count <= 0 ? null : queue.Peek(); canPublish = head != null && head.CanPublish; // do this synced } if (canPublish) @@ -156,8 +156,7 @@ namespace Lucene.Net.Index lock (this) { // finally remove the published ticket from the queue - FlushTicket poll = queue.First.Value; - queue.Remove(poll); + FlushTicket poll = queue.Dequeue(); ticketCount.DecrementAndGet(); Debug.Assert(poll == head); }
