Skip to content

Commit

Permalink
Improve search performance (#124)
Browse files Browse the repository at this point in the history
minor improvement linq query
  • Loading branch information
coenm authored May 22, 2024
1 parent a92acd1 commit 77a65ad
Show file tree
Hide file tree
Showing 19 changed files with 77 additions and 98 deletions.
2 changes: 1 addition & 1 deletion src/RepoM.ActionMenu.Core/RepoM.ActionMenu.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<ItemGroup>
<PackageReference Include="DotNetEnv" Version="3.0.0" />
<PackageReference Include="Scriban" Version="5.9.1" />
<PackageReference Include="SimpleInjector" Version="5.4.4" />
<PackageReference Include="SimpleInjector" Version="5.4.5" />
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
<PackageReference Include="YamlDotNet" Version="15.1.2" />
</ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/RepoM.App/RepoM.App.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
<PackageReference Include="SimpleInjector" Version="5.4.5" />
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
<PackageReference Include="Hardcodet.NotifyIcon.Wpf" Version="1.1.0" />
<PackageReference Include="Microsoft.Windows.Compatibility" Version="8.0.4" />
<PackageReference Include="Microsoft.Windows.Compatibility" Version="8.0.5" />
<PackageReference Include="DotNetEnv" Version="3.0.0" />
<PackageReference Include="FluentWPF" Version="0.10.2" />
<PackageReference Include="LibGit2Sharp" Version="0.30.0" />
Expand Down
51 changes: 15 additions & 36 deletions src/RepoM.App/RepositoryFiltering/RepositoryMatcher.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
namespace RepoM.App.RepositoryFiltering;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using RepoM.Core.Plugin.Repository;
using RepoM.Core.Plugin.RepositoryFiltering;
using RepoM.Core.Plugin.RepositoryFiltering.Clause;
Expand All @@ -18,37 +20,16 @@ public RepositoryMatcher(IEnumerable<IQueryMatcher> matchers)

public bool Matches(IRepository repository, IQuery query)
{
if (query is TrueQuery)
return query switch
{
return true;
}

if (query is FalseQuery)
{
return false;
}

if (query is AndQuery and)
{
return HandleAnd(repository, and);
}

if (query is OrQuery or)
{
return HandleOr(repository, or);
}

if (query is NotQuery not)
{
return !Matches(repository, not.Item);
}

if (query is TermBase st)
{
return HandleTerm(repository, st);
}

return true;
TrueQuery => true,
FalseQuery => false,
AndQuery and => HandleAnd(repository, and),
OrQuery or => HandleOr(repository, or),
NotQuery not => !Matches(repository, not.Item),
TermBase st => HandleTerm(repository, st),
_ => true,
};
}

private bool HandleTerm(IRepository repository, TermBase termBase)
Expand All @@ -67,17 +48,15 @@ private bool HandleTerm(IRepository repository, TermBase termBase)
return false;
}

[MethodImpl(MethodImplOptions.AggressiveInlining)]
private bool HandleAnd(IRepository repository, AndQuery and)
{
return and.Items
.Select(q => Matches(repository, q))
.All(result => result);
return Array.TrueForAll(and.Items, query => Matches(repository, query));
}

[MethodImpl(MethodImplOptions.AggressiveInlining)]
private bool HandleOr(IRepository repository, OrQuery or)
{
return or.Items
.Select(q => Matches(repository, q))
.Any(result => result);
return Array.Exists(or.Items, query => Matches(repository, query));
}
}
2 changes: 1 addition & 1 deletion src/RepoM.Core.Plugin/RepoM.Core.Plugin.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.1" />
<PackageReference Include="SimpleInjector" Version="5.4.4" />
<PackageReference Include="SimpleInjector" Version="5.4.5" />
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>

<PackageReference Include="FakeItEasy" Version="8.1.0" />
<PackageReference Include="FakeItEasy" Version="8.2.0" />
<PackageReference Include="FakeItEasy.Analyzer.CSharp" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand All @@ -25,9 +25,9 @@
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
<PackageReference Include="Verify.ClipboardAccept" Version="23.6.0" />
<PackageReference Include="Verify.Xunit" Version="23.6.0" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="Verify.ClipboardAccept" Version="24.2.0" />
<PackageReference Include="Verify.Xunit" Version="24.2.0" />
<PackageReference Include="xunit" Version="2.8.0" />
<PackageReference Include="xunit.categories" Version="2.0.8" />
<PackageReference Include="Xunit.EnumMemberData" Version="1.0.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="EasyTestFile.XUnit" Version="2.1.5-alpha" />
<PackageReference Include="FakeItEasy" Version="8.1.0" />
<PackageReference Include="FakeItEasy" Version="8.2.0" />
<PackageReference Include="FakeItEasy.Analyzer.CSharp" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand All @@ -25,9 +25,9 @@
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
<PackageReference Include="Verify.ClipboardAccept" Version="23.6.0" />
<PackageReference Include="Verify.Xunit" Version="23.6.0" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="Verify.ClipboardAccept" Version="24.2.0" />
<PackageReference Include="Verify.Xunit" Version="24.2.0" />
<PackageReference Include="xunit" Version="2.8.0" />
<PackageReference Include="Xunit.EnumMemberData" Version="1.0.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="EasyTestFile.XUnit" Version="2.1.5-alpha" />
<PackageReference Include="FakeItEasy" Version="8.1.0" />
<PackageReference Include="FakeItEasy" Version="8.2.0" />
<PackageReference Include="FakeItEasy.Analyzer.CSharp" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand All @@ -26,9 +26,9 @@
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
<PackageReference Include="Verify.ClipboardAccept" Version="23.6.0" />
<PackageReference Include="Verify.Xunit" Version="23.6.0" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="Verify.ClipboardAccept" Version="24.2.0" />
<PackageReference Include="Verify.Xunit" Version="24.2.0" />
<PackageReference Include="xunit" Version="2.8.0" />
<PackageReference Include="xunit.categories" Version="2.0.8" />
<PackageReference Include="Xunit.EnumMemberData" Version="1.0.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
Expand Down
8 changes: 4 additions & 4 deletions tests/RepoM.Api.Tests/RepoM.Api.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="EasyTestFile.XUnit" Version="2.1.5-alpha" />
<PackageReference Include="FakeItEasy" Version="8.1.0" />
<PackageReference Include="FakeItEasy" Version="8.2.0" />
<PackageReference Include="FakeItEasy.Analyzer.CSharp" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand All @@ -24,9 +24,9 @@
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
<PackageReference Include="Verify.ClipboardAccept" Version="23.6.0" />
<PackageReference Include="Verify.Xunit" Version="23.6.0" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="Verify.ClipboardAccept" Version="24.2.0" />
<PackageReference Include="Verify.Xunit" Version="24.2.0" />
<PackageReference Include="xunit" Version="2.8.0" />
<PackageReference Include="xunit.categories" Version="2.0.8" />
<PackageReference Include="Xunit.EnumMemberData" Version="1.0.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
Expand Down
8 changes: 4 additions & 4 deletions tests/RepoM.App.Tests/RepoM.App.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="EasyTestFile.XUnit" Version="2.1.5-alpha" />
<PackageReference Include="FakeItEasy" Version="8.1.0" />
<PackageReference Include="FakeItEasy" Version="8.2.0" />
<PackageReference Include="FakeItEasy.Analyzer.CSharp" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand All @@ -24,9 +24,9 @@
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
<PackageReference Include="Verify.ClipboardAccept" Version="23.6.0" />
<PackageReference Include="Verify.Xunit" Version="23.6.0" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="Verify.ClipboardAccept" Version="24.2.0" />
<PackageReference Include="Verify.Xunit" Version="24.2.0" />
<PackageReference Include="xunit" Version="2.8.0" />
<PackageReference Include="xunit.categories" Version="2.0.8" />
<PackageReference Include="Xunit.EnumMemberData" Version="1.0.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="EasyTestFile.XUnit" Version="2.1.5-alpha" />
<PackageReference Include="FakeItEasy" Version="8.1.0" />
<PackageReference Include="FakeItEasy" Version="8.2.0" />
<PackageReference Include="FakeItEasy.Analyzer.CSharp" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand All @@ -26,9 +26,9 @@
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
<PackageReference Include="Verify.ClipboardAccept" Version="23.6.0" />
<PackageReference Include="Verify.Xunit" Version="23.6.0" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="Verify.ClipboardAccept" Version="24.2.0" />
<PackageReference Include="Verify.Xunit" Version="24.2.0" />
<PackageReference Include="xunit" Version="2.8.0" />
<PackageReference Include="xunit.categories" Version="2.0.8" />
<PackageReference Include="Xunit.EnumMemberData" Version="1.0.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="EasyTestFile.XUnit" Version="2.1.5-alpha" />
<PackageReference Include="FakeItEasy" Version="8.1.0" />
<PackageReference Include="FakeItEasy" Version="8.2.0" />
<PackageReference Include="FakeItEasy.Analyzer.CSharp" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand All @@ -26,9 +26,9 @@
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
<PackageReference Include="Verify.ClipboardAccept" Version="23.6.0" />
<PackageReference Include="Verify.Xunit" Version="23.6.0" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="Verify.ClipboardAccept" Version="24.2.0" />
<PackageReference Include="Verify.Xunit" Version="24.2.0" />
<PackageReference Include="xunit" Version="2.8.0" />
<PackageReference Include="xunit.categories" Version="2.0.8" />
<PackageReference Include="Xunit.EnumMemberData" Version="1.0.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="EasyTestFile.XUnit" Version="2.1.5-alpha" />
<PackageReference Include="FakeItEasy" Version="8.1.0" />
<PackageReference Include="FakeItEasy" Version="8.2.0" />
<PackageReference Include="FakeItEasy.Analyzer.CSharp" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand All @@ -26,9 +26,9 @@
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
<PackageReference Include="Verify.ClipboardAccept" Version="23.6.0" />
<PackageReference Include="Verify.Xunit" Version="23.6.0" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="Verify.ClipboardAccept" Version="24.2.0" />
<PackageReference Include="Verify.Xunit" Version="24.2.0" />
<PackageReference Include="xunit" Version="2.8.0" />
<PackageReference Include="xunit.categories" Version="2.0.8" />
<PackageReference Include="Xunit.EnumMemberData" Version="1.0.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="FakeItEasy" Version="8.1.0" />
<PackageReference Include="FakeItEasy" Version="8.2.0" />
<PackageReference Include="FakeItEasy.Analyzer.CSharp" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand All @@ -24,9 +24,9 @@
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
<PackageReference Include="Verify.ClipboardAccept" Version="23.6.0" />
<PackageReference Include="Verify.Xunit" Version="23.6.0" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="Verify.ClipboardAccept" Version="24.2.0" />
<PackageReference Include="Verify.Xunit" Version="24.2.0" />
<PackageReference Include="xunit" Version="2.8.0" />
<PackageReference Include="xunit.categories" Version="2.0.8" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand Down
8 changes: 4 additions & 4 deletions tests/RepoM.Plugin.Misc.Tests/RepoM.Plugin.Misc.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="EasyTestFile.XUnit" Version="2.1.5-alpha" />
<PackageReference Include="FakeItEasy" Version="8.1.0" />
<PackageReference Include="FakeItEasy" Version="8.2.0" />
<PackageReference Include="FakeItEasy.Analyzer.CSharp" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand All @@ -25,9 +25,9 @@
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
<PackageReference Include="Verify.ClipboardAccept" Version="23.6.0" />
<PackageReference Include="Verify.Xunit" Version="23.6.0" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="Verify.ClipboardAccept" Version="24.2.0" />
<PackageReference Include="Verify.Xunit" Version="24.2.0" />
<PackageReference Include="xunit" Version="2.8.0" />
<PackageReference Include="xunit.categories" Version="2.0.8" />
<PackageReference Include="Xunit.EnumMemberData" Version="1.0.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="EasyTestFile.XUnit" Version="2.1.5-alpha" />
<PackageReference Include="FakeItEasy" Version="8.1.0" />
<PackageReference Include="FakeItEasy" Version="8.2.0" />
<PackageReference Include="FakeItEasy.Analyzer.CSharp" Version="6.1.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
Expand All @@ -26,9 +26,9 @@
<PackageReference Include="System.IO.Abstractions" Version="21.0.2" />
<PackageReference Include="System.IO.Abstractions.TestingHelpers" Version="21.0.2" />
<PackageReference Include="System.Linq.Async" Version="6.0.1" />
<PackageReference Include="Verify.ClipboardAccept" Version="23.6.0" />
<PackageReference Include="Verify.Xunit" Version="23.6.0" />
<PackageReference Include="xunit" Version="2.7.0" />
<PackageReference Include="Verify.ClipboardAccept" Version="24.2.0" />
<PackageReference Include="Verify.Xunit" Version="24.2.0" />
<PackageReference Include="xunit" Version="2.8.0" />
<PackageReference Include="xunit.categories" Version="2.0.8" />
<PackageReference Include="Xunit.EnumMemberData" Version="1.0.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.7">
Expand Down
Loading

0 comments on commit 77a65ad

Please sign in to comment.