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/07/21 09:48:49 UTC

[lucenenet] 15/24: PERFORMANCE: Lucene.Net.Index.DocumentsWriterFlushQueue: Replaced FlushTicket LinkedList with a Queue

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 <sh...@shadstorhaug.com>
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);
                         }