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);
}