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 2021/11/22 05:59:29 UTC

[lucenenet] 01/02: SWEEP: Made stateless private sealed comparers into singletons (unless they already have a static property)

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 485d53ed14422be8a2e0bd097528ef3543a0f8e8
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Sat Nov 20 04:27:07 2021 +0700

    SWEEP: Made stateless private sealed comparers into singletons (unless they already have a static property)
---
 .../Language/DaitchMokotoffSoundex.cs                |  6 +++++-
 .../ByTask/Feeds/ContentItemsSource.cs               |  6 +++++-
 .../ByTask/Feeds/DirContentSource.cs                 |  6 +++++-
 src/Lucene.Net.Highlighter/Highlight/TokenSources.cs |  6 +++++-
 .../Spell/WordBreakSpellChecker.cs                   | 20 ++++++++++++++------
 src/Lucene.Net.Tests.Misc/Misc/TestHighFreqTerms.cs  | 20 ++++++++++----------
 6 files changed, 44 insertions(+), 20 deletions(-)

diff --git a/src/Lucene.Net.Analysis.Phonetic/Language/DaitchMokotoffSoundex.cs b/src/Lucene.Net.Analysis.Phonetic/Language/DaitchMokotoffSoundex.cs
index 8c229f1..e282649 100644
--- a/src/Lucene.Net.Analysis.Phonetic/Language/DaitchMokotoffSoundex.cs
+++ b/src/Lucene.Net.Analysis.Phonetic/Language/DaitchMokotoffSoundex.cs
@@ -244,6 +244,10 @@ namespace Lucene.Net.Analysis.Phonetic.Language
 
         private class DaitchMokotoffRuleComparer : IComparer<Rule>
         {
+            private DaitchMokotoffRuleComparer() { } // LUCENENET: Made into singleton
+
+            public static IComparer<Rule> Default { get; } = new DaitchMokotoffRuleComparer();
+
             [MethodImpl(MethodImplOptions.AggressiveInlining)]
             public int Compare(Rule rule1, Rule rule2)
             {
@@ -268,7 +272,7 @@ namespace Lucene.Net.Analysis.Phonetic.Language
             foreach (var rule in RULES)
             {
                 IList<Rule> ruleList = rule.Value;
-                ruleList.Sort(new DaitchMokotoffRuleComparer());
+                ruleList.Sort(DaitchMokotoffRuleComparer.Default);
             }
         }
 
diff --git a/src/Lucene.Net.Benchmark/ByTask/Feeds/ContentItemsSource.cs b/src/Lucene.Net.Benchmark/ByTask/Feeds/ContentItemsSource.cs
index 2029837..7932f74 100644
--- a/src/Lucene.Net.Benchmark/ByTask/Feeds/ContentItemsSource.cs
+++ b/src/Lucene.Net.Benchmark/ByTask/Feeds/ContentItemsSource.cs
@@ -107,7 +107,7 @@ namespace Lucene.Net.Benchmarks.ByTask.Feeds
         protected void CollectFiles(DirectoryInfo dir, IList<FileInfo> files)
         {
             CollectFilesImpl(dir, files);
-            files.Sort(new FileNameComparer());
+            files.Sort(FileNameComparer.Default);
         }
 
         private void CollectFilesImpl(DirectoryInfo dir, IList<FileInfo> files)
@@ -122,6 +122,10 @@ namespace Lucene.Net.Benchmarks.ByTask.Feeds
 
         private class FileNameComparer : IComparer<FileInfo>
         {
+            private FileNameComparer() { } // LUCENENET: Made into singleton
+
+            public static IComparer<FileInfo> Default { get; } = new FileNameComparer();
+
             public int Compare(FileInfo x, FileInfo y)
             {
                 return x.FullName.CompareToOrdinal(y.FullName);
diff --git a/src/Lucene.Net.Benchmark/ByTask/Feeds/DirContentSource.cs b/src/Lucene.Net.Benchmark/ByTask/Feeds/DirContentSource.cs
index b364796..ff5f381 100644
--- a/src/Lucene.Net.Benchmark/ByTask/Feeds/DirContentSource.cs
+++ b/src/Lucene.Net.Benchmark/ByTask/Feeds/DirContentSource.cs
@@ -48,6 +48,10 @@ namespace Lucene.Net.Benchmarks.ByTask.Feeds
 
             private class Comparer : IComparer<FileInfo>
             {
+                private Comparer() { } // LUCENENET: Made into singleton
+
+                public static IComparer<FileInfo> Default { get; } = new Comparer();
+
                 public int Compare(FileInfo a, FileInfo b)
                 {
                     string a2 = a.ToString();
@@ -83,7 +87,7 @@ namespace Lucene.Net.Benchmarks.ByTask.Feeds
             /* this seems silly ... there must be a better way ...
                not that this is good, but can it matter? */
 
-            private readonly Comparer c = new Comparer(); // LUCENENET: marked readonly
+            private readonly IComparer<FileInfo> c = Comparer.Default; // LUCENENET: marked readonly
 
             private FileInfo current;
 
diff --git a/src/Lucene.Net.Highlighter/Highlight/TokenSources.cs b/src/Lucene.Net.Highlighter/Highlight/TokenSources.cs
index eba68aa..7bfeb9e 100644
--- a/src/Lucene.Net.Highlighter/Highlight/TokenSources.cs
+++ b/src/Lucene.Net.Highlighter/Highlight/TokenSources.cs
@@ -37,6 +37,10 @@ namespace Lucene.Net.Search.Highlight
     {
         private class TokenComparer : IComparer<Token>
         {
+            private TokenComparer() { } // LUCENENET: Made into singleton
+
+            public static IComparer<Token> Default { get; } = new TokenComparer();
+
             public int Compare(Token t1, Token t2)
             {
                 if (t1.StartOffset == t2.StartOffset)
@@ -275,7 +279,7 @@ namespace Lucene.Net.Search.Highlight
             if (unsortedTokens != null)
             {
                 tokensInOriginalOrder = unsortedTokens.ToArray();
-                ArrayUtil.TimSort(tokensInOriginalOrder, new TokenComparer());
+                ArrayUtil.TimSort(tokensInOriginalOrder, TokenComparer.Default);
                 //tokensInOriginalOrder = tokensInOriginalOrder
                 //    .OrderBy(t => t, new TokenComparer() )
                 //    .ToArray();
diff --git a/src/Lucene.Net.Suggest/Spell/WordBreakSpellChecker.cs b/src/Lucene.Net.Suggest/Spell/WordBreakSpellChecker.cs
index 4543e85..2ac8135 100644
--- a/src/Lucene.Net.Suggest/Spell/WordBreakSpellChecker.cs
+++ b/src/Lucene.Net.Suggest/Spell/WordBreakSpellChecker.cs
@@ -99,8 +99,8 @@ namespace Lucene.Net.Search.Spell
 
             int queueInitialCapacity = maxSuggestions > 10 ? 10 : maxSuggestions;
             IComparer<SuggestWordArrayWrapper> queueComparer = sortMethod == BreakSuggestionSortMethod.NUM_CHANGES_THEN_MAX_FREQUENCY 
-                ? (IComparer<SuggestWordArrayWrapper>)new LengthThenMaxFreqComparer() 
-                : new LengthThenSumFreqComparer();
+                ? (IComparer<SuggestWordArrayWrapper>)LengthThenMaxFreqComparer.Default 
+                : LengthThenSumFreqComparer.Default;
             JCG.PriorityQueue<SuggestWordArrayWrapper> suggestions = new JCG.PriorityQueue<SuggestWordArrayWrapper>(queueInitialCapacity, queueComparer);
 
             int origFreq = ir.DocFreq(term);
@@ -172,7 +172,7 @@ namespace Lucene.Net.Search.Spell
             }
 
             int queueInitialCapacity = maxSuggestions > 10 ? 10 : maxSuggestions;
-            IComparer<CombineSuggestionWrapper> queueComparer = new CombinationsThenFreqComparer();
+            IComparer<CombineSuggestionWrapper> queueComparer = CombinationsThenFreqComparer.Default;
             JCG.PriorityQueue<CombineSuggestionWrapper> suggestions = new JCG.PriorityQueue<CombineSuggestionWrapper>(queueInitialCapacity, queueComparer);
 
             int thisTimeEvaluations = 0;
@@ -409,6 +409,10 @@ namespace Lucene.Net.Search.Spell
 
         private sealed class LengthThenMaxFreqComparer : IComparer<SuggestWordArrayWrapper>
         {
+            private LengthThenMaxFreqComparer() { } // LUCENENET: Made into singleton
+
+            public static IComparer<SuggestWordArrayWrapper> Default { get; } = new LengthThenMaxFreqComparer();
+
             public int Compare(SuggestWordArrayWrapper o1, SuggestWordArrayWrapper o2)
             {
                 if (o1.SuggestWords.Length != o2.SuggestWords.Length)
@@ -425,6 +429,10 @@ namespace Lucene.Net.Search.Spell
 
         private sealed class LengthThenSumFreqComparer : IComparer<SuggestWordArrayWrapper>
         {
+            private LengthThenSumFreqComparer() { } // LUCENENET: Made into singleton
+
+            public static IComparer<SuggestWordArrayWrapper> Default { get; } = new LengthThenSumFreqComparer();
+
             public int Compare(SuggestWordArrayWrapper o1, SuggestWordArrayWrapper o2)
             {
                 if (o1.SuggestWords.Length != o2.SuggestWords.Length)
@@ -441,9 +449,9 @@ namespace Lucene.Net.Search.Spell
 
         private sealed class CombinationsThenFreqComparer : IComparer<CombineSuggestionWrapper>
         {
-            public CombinationsThenFreqComparer()
-            {
-            }
+            private CombinationsThenFreqComparer() { } // LUCENENET: Made into singleton
+
+            public static IComparer<CombineSuggestionWrapper> Default { get; } = new CombinationsThenFreqComparer();
 
             public int Compare(CombineSuggestionWrapper o1, CombineSuggestionWrapper o2)
             {
diff --git a/src/Lucene.Net.Tests.Misc/Misc/TestHighFreqTerms.cs b/src/Lucene.Net.Tests.Misc/Misc/TestHighFreqTerms.cs
index 0472aab..5c72489 100644
--- a/src/Lucene.Net.Tests.Misc/Misc/TestHighFreqTerms.cs
+++ b/src/Lucene.Net.Tests.Misc/Misc/TestHighFreqTerms.cs
@@ -1,4 +1,4 @@
-/*
+/*
  *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -72,7 +72,7 @@ namespace Lucene.Net.Misc
             int numTerms = 12;
             string field = null;
             TermStats[]
-            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, new HighFreqTerms.DocFreqComparer());
+            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, HighFreqTerms.DocFreqComparer.Default);
             assertEquals("Term with highest docfreq is first", 20, terms[0].DocFreq);
         }
 
@@ -82,7 +82,7 @@ namespace Lucene.Net.Misc
             int numTerms = 12;
             string field = "FIELD_1";
             TermStats[]
-            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, new HighFreqTerms.DocFreqComparer());
+            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, HighFreqTerms.DocFreqComparer.Default);
             assertEquals("Term with highest docfreq is first", 10, terms[0].DocFreq);
         }
 
@@ -92,7 +92,7 @@ namespace Lucene.Net.Misc
             int numTerms = 12;
             string field = "FIELD_1";
             TermStats[]
-            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, new HighFreqTerms.DocFreqComparer());
+            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, HighFreqTerms.DocFreqComparer.Default);
             for (int i = 0; i < terms.Length; i++)
             {
                 if (i > 0)
@@ -108,7 +108,7 @@ namespace Lucene.Net.Misc
             int numTerms = 12;
             string field = null;
             TermStats[]
-            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, new HighFreqTerms.DocFreqComparer());
+            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, HighFreqTerms.DocFreqComparer.Default);
             assertEquals("length of terms array equals numTerms :" + numTerms, numTerms, terms.Length);
         }
 
@@ -118,7 +118,7 @@ namespace Lucene.Net.Misc
             int numTerms = 12;
             string field = "FIELD_1";
             TermStats[]
-            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, new HighFreqTerms.DocFreqComparer());
+            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, HighFreqTerms.DocFreqComparer.Default);
 
             for (int i = 0; i < terms.Length; i++)
             {
@@ -152,7 +152,7 @@ namespace Lucene.Net.Misc
             int numTerms = 20;
             string field = null;
             TermStats[]
-            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, new HighFreqTerms.TotalTermFreqComparer());
+            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, HighFreqTerms.TotalTermFreqComparer.Default);
             assertEquals("Term with highest totalTermFreq is first", 200, terms[0].TotalTermFreq);
         }
 
@@ -162,7 +162,7 @@ namespace Lucene.Net.Misc
             int numTerms = 20;
             string field = "different_field";
             TermStats[]
-            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, new HighFreqTerms.TotalTermFreqComparer());
+            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, HighFreqTerms.TotalTermFreqComparer.Default);
             assertEquals("Term with highest totalTermFreq is first" + terms[0].GetTermText(), 150, terms[0].TotalTermFreq);
         }
 
@@ -172,7 +172,7 @@ namespace Lucene.Net.Misc
             int numTerms = 12;
             string field = "FIELD_1";
             TermStats[]
-            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, new HighFreqTerms.TotalTermFreqComparer());
+            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, HighFreqTerms.TotalTermFreqComparer.Default);
 
             for (int i = 0; i < terms.Length; i++)
             {
@@ -191,7 +191,7 @@ namespace Lucene.Net.Misc
             int numTerms = 12;
             string field = "FIELD_1";
             TermStats[]
-            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, new HighFreqTerms.TotalTermFreqComparer());
+            terms = HighFreqTerms.GetHighFreqTerms(reader, numTerms, field, HighFreqTerms.TotalTermFreqComparer.Default);
 
             for (int i = 0; i < terms.Length; i++)
             {