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 56c8e08e0d87ba0fe4df158d6a9ab7483e1233e1 Author: Shad Storhaug <[email protected]> AuthorDate: Thu Oct 27 09:14:41 2022 +0700 PERFORAMANCE: Lucene.Net.Analysis.Ga.IrishLowerCaseFilter: Use stack and spans to reduce allocations and improve throughput. --- .../Analysis/Ga/IrishLowerCaseFilter.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Lucene.Net.Analysis.Common/Analysis/Ga/IrishLowerCaseFilter.cs b/src/Lucene.Net.Analysis.Common/Analysis/Ga/IrishLowerCaseFilter.cs index 0eab8d90a..ec2d6f28a 100644 --- a/src/Lucene.Net.Analysis.Common/Analysis/Ga/IrishLowerCaseFilter.cs +++ b/src/Lucene.Net.Analysis.Common/Analysis/Ga/IrishLowerCaseFilter.cs @@ -1,6 +1,8 @@ -// Lucene version compatibility level 4.8.1 +// Lucene version compatibility level 4.8.1 using J2N; using Lucene.Net.Analysis.TokenAttributes; +using Lucene.Net.Util; +using System; using System.Globalization; namespace Lucene.Net.Analysis.Ga @@ -62,10 +64,13 @@ namespace Lucene.Net.Analysis.Ga chLen = chLen + 1; } - for (int i = idx; i < chLen;) - { - i += Character.ToChars(Character.ToLower(chArray[i], culture), chArray, i); // LUCENENET specific - use Irish culture when lowercasing - } + // LUCENENET: Reduce allocations by using the stack and spans + var source = new ReadOnlySpan<char>(chArray, idx, chLen); + var destination = chArray.AsSpan(idx, chLen); + var spare = chLen * sizeof(char) <= Constants.MaxStackByteLimit ? stackalloc char[chLen] : new char[chLen]; + source.ToLower(spare, culture); // LUCENENET specific - use Irish culture when lowercasing + spare.CopyTo(destination); + return true; } else
