StringBuilderPool reduced memory allocation in 3000 times
This commit is contained in:
@@ -1,6 +1,25 @@
|
||||
namespace ParadoxSaveParser.Lib;
|
||||
|
||||
public record SearchArgs(string key, int localIndex);
|
||||
public record SearchArgs
|
||||
{
|
||||
public readonly string KeyStr;
|
||||
public readonly StringBuilder? KeySB;
|
||||
public readonly int LocalIndex;
|
||||
|
||||
public SearchArgs(int localIndex, string keyStr)
|
||||
{
|
||||
KeyStr = keyStr;
|
||||
KeySB = null;
|
||||
LocalIndex = localIndex;
|
||||
}
|
||||
|
||||
public SearchArgs(int localIndex, StringBuilder keySb)
|
||||
{
|
||||
KeyStr = string.Empty;
|
||||
KeySB = keySb;
|
||||
LocalIndex = localIndex;
|
||||
}
|
||||
}
|
||||
|
||||
public interface ISearchExpression
|
||||
{
|
||||
@@ -109,7 +128,7 @@ public static class SearchExpressionCompiler
|
||||
{
|
||||
public bool DoesMatch(SearchArgs args, out ISearchExpression? nextSearchExpression)
|
||||
{
|
||||
if (args.localIndex == index)
|
||||
if (args.LocalIndex == index)
|
||||
{
|
||||
nextSearchExpression = next;
|
||||
return true;
|
||||
@@ -124,7 +143,7 @@ public static class SearchExpressionCompiler
|
||||
{
|
||||
public bool DoesMatch(SearchArgs args, out ISearchExpression? nextSearchExpression)
|
||||
{
|
||||
if (args.key == key)
|
||||
if ((args.KeySB != null && args.KeySB.Equals(key)) || args.KeyStr == key)
|
||||
{
|
||||
nextSearchExpression = next;
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user