Skip to content

Commit f4742a3

Browse files
committed
Merge branch 'perf/tokenizer'
2 parents e854c53 + 18b9239 commit f4742a3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1680
-433
lines changed

.editorconfig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,3 +230,13 @@ indent_size = 2
230230
end_of_line = lf
231231
[*.{cmd,bat}]
232232
end_of_line = crlf
233+
234+
# Verify settings
235+
[*.{received,verified}.{json,txt,xml}]
236+
charset = "utf-8-bom"
237+
end_of_line = lf
238+
indent_size = unset
239+
indent_style = unset
240+
insert_final_newline = false
241+
tab_width = unset
242+
trim_trailing_whitespace = false

.gitattributes

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
*.verified.txt text eol=lf working-tree-encoding=UTF-8
2+
*.verified.xml text eol=lf working-tree-encoding=UTF-8
3+
*.verified.json text eol=lf working-tree-encoding=UTF-8

.gitignore

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
##
44
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
55

6+
# Verify received Files
7+
*.received.*
8+
9+
# Profiler diagnostics
10+
*.diagsession
11+
612
# User-specific files
713
*.rsuser
814
*.suo
@@ -443,4 +449,4 @@ $RECYCLE.BIN/
443449

444450
## Ingenium Defaults
445451
artefacts/*
446-
**/appsettings.env.json
452+
**/appsettings.env.json

Directory.Packages.props

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
<Project>
22
<PropertyGroup>
33
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
4-
5-
<!-- Microsoft.Extensions.* Ver -->
6-
<DotNet8Version>8.0.0</DotNet8Version>
4+
<!-- Microsoft.Extensions.* Ver -->
5+
<DotNet8Version>8.0.0</DotNet8Version>
76
</PropertyGroup>
8-
97
<ItemGroup>
10-
<PackageVersion Include="Ben.Demystifier" Version="0.4.1" />
11-
<PackageVersion Include="BenchmarkDotNet" Version="0.13.7" />
8+
<PackageVersion Include="Ben.Demystifier" Version="0.4.1" />
9+
<PackageVersion Include="BenchmarkDotNet" Version="0.14.0" />
1210
<PackageVersion Include="FluentValidation" Version="11.6.0" />
13-
<PackageVersion Include="MinVer" Version="4.3.0" />
14-
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="$(DotNet8Version)" />
15-
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="$(DotNet8Version)" />
16-
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="$(DotNet8Version)" />
17-
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="$(DotNet8Version)" />
18-
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(DotNet8Version)" />
19-
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(DotNet8Version)" />
20-
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(DotNet8Version)" />
21-
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(DotNet8Version)" />
11+
<PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="9.0.0" />
12+
<PackageVersion Include="MinVer" Version="4.3.0" />
13+
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="$(DotNet8Version)" />
14+
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="$(DotNet8Version)" />
15+
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="$(DotNet8Version)" />
16+
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="$(DotNet8Version)" />
17+
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="$(DotNet8Version)" />
18+
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(DotNet8Version)" />
19+
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(DotNet8Version)" />
20+
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(DotNet8Version)" />
2221
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
23-
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="$(DotNet8Version)" />
24-
<PackageVersion Include="System.Net.Http.Json" Version="$(DotNet8Version)" />
25-
<PackageVersion Include="System.Text.Json" Version="8.0.4" />
26-
<PackageVersion Include="xunit" Version="2.6.5" />
27-
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.6" />
22+
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="$(DotNet8Version)" />
23+
<PackageVersion Include="System.Net.Http.Json" Version="$(DotNet8Version)" />
24+
<PackageVersion Include="System.Text.Json" Version="8.0.4" />
25+
<PackageVersion Include="Verify.Xunit" Version="28.2.1" />
26+
<PackageVersion Include="xunit" Version="2.9.2" />
27+
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
2828
</ItemGroup>
29-
</Project>
29+
</Project>

FuManchu.sln

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FuManchu", "libs\FuManchu\F
4141
EndProject
4242
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FuManchu.Tests", "tests\FuManchu.Tests\FuManchu.Tests.csproj", "{5657C855-7F41-4BBD-8F28-6158C9F4412B}"
4343
EndProject
44+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "apps", "apps", "{7DF84E8F-934C-4AF3-9AA1-5465BF597E57}"
45+
EndProject
46+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FuManchu.Benckmarking", "apps\FuManchu.Benckmarking\FuManchu.Benckmarking.csproj", "{EAB25E3C-BB47-4D8B-B6E6-2770BA922448}"
47+
EndProject
4448
Global
4549
GlobalSection(SolutionConfigurationPlatforms) = preSolution
4650
Debug|Any CPU = Debug|Any CPU
@@ -63,6 +67,10 @@ Global
6367
{5657C855-7F41-4BBD-8F28-6158C9F4412B}.Debug|Any CPU.Build.0 = Debug|Any CPU
6468
{5657C855-7F41-4BBD-8F28-6158C9F4412B}.Release|Any CPU.ActiveCfg = Release|Any CPU
6569
{5657C855-7F41-4BBD-8F28-6158C9F4412B}.Release|Any CPU.Build.0 = Release|Any CPU
70+
{EAB25E3C-BB47-4D8B-B6E6-2770BA922448}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
71+
{EAB25E3C-BB47-4D8B-B6E6-2770BA922448}.Debug|Any CPU.Build.0 = Debug|Any CPU
72+
{EAB25E3C-BB47-4D8B-B6E6-2770BA922448}.Release|Any CPU.ActiveCfg = Release|Any CPU
73+
{EAB25E3C-BB47-4D8B-B6E6-2770BA922448}.Release|Any CPU.Build.0 = Release|Any CPU
6674
EndGlobalSection
6775
GlobalSection(SolutionProperties) = preSolution
6876
HideSolutionNode = FALSE
@@ -74,6 +82,7 @@ Global
7482
{97639CDE-C698-4FD7-995F-8AE44F1BF8E0} = {158819D8-F88C-4F77-890F-D0C2E4D56C08}
7583
{83D92240-965A-4E84-8686-48EAAA153FE6} = {E48489AB-B880-4C98-92D3-4E171FB1735C}
7684
{5657C855-7F41-4BBD-8F28-6158C9F4412B} = {37ABC77B-D881-471D-AF7A-1A5E8118D534}
85+
{EAB25E3C-BB47-4D8B-B6E6-2770BA922448} = {7DF84E8F-934C-4AF3-9AA1-5465BF597E57}
7786
EndGlobalSection
7887
GlobalSection(ExtensibilityGlobals) = postSolution
7988
SolutionGuid = {EFA92856-B041-4D18-B733-EC53980E9492}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
<Configurations>Debug;Release</Configurations>
9+
<ImplicitPackageReferences>false</ImplicitPackageReferences>
10+
</PropertyGroup>
11+
12+
<ItemGroup>
13+
<PackageReference Include="BenchmarkDotNet" />
14+
</ItemGroup>
15+
16+
<ItemGroup>
17+
<ProjectReference Include="..\..\libs\FuManchu\FuManchu.csproj" />
18+
</ItemGroup>
19+
20+
</Project>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// This work is licensed under the terms of the MIT license.
2+
// For a copy, see <https://opensource.org/licenses/MIT>.
3+
4+
using BenchmarkDotNet.Attributes;
5+
using BenchmarkDotNet.Running;
6+
7+
using FuManchu.Text;
8+
using FuManchu.Tokenizer;
9+
10+
BenchmarkSwitcher.FromAssembly(typeof(Benchmarking).Assembly).Run(args);
11+
12+
//Benchmarking b = new();
13+
//for (int i = 0; i < 10_000; i++)
14+
//{
15+
// b.Test();
16+
//}
17+
18+
[MemoryDiagnoser, ShortRunJob]
19+
public class Benchmarking
20+
{
21+
[Benchmark]
22+
public void Test()
23+
{
24+
const string Template = "{{#if Variable}}Hello World{{/if}}";
25+
26+
Baseline(Template);
27+
}
28+
29+
void Baseline(string template)
30+
{
31+
using var reader = new StringReader(template);
32+
using var source = new SeekableTextReader(reader);
33+
using var tokenizer = new HandlebarsTokenizer(source);
34+
35+
while (tokenizer.NextSymbol() != null) { }
36+
}
37+
}

libs/FuManchu/FuManchu.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@
1919
<PackageProjectUrl>https://github.com/IngeniumSE/FuManchu</PackageProjectUrl>
2020
<Copyright>Copyright 2024 Ingenium Software Engineering</Copyright>
2121
<ImplicitPackageReferences>false</ImplicitPackageReferences>
22+
<Configurations>Debug;Release</Configurations>
2223
</PropertyGroup>
2324

2425
<ItemGroup>
26+
<PackageReference Include="Microsoft.Extensions.ObjectPool" />
2527
<PackageReference Include="MinVer" />
2628
</ItemGroup>
2729

0 commit comments

Comments
 (0)