Skip to content

Commit 58943a7

Browse files
committed
Add template compilation cache
1 parent 8960e73 commit 58943a7

26 files changed

Lines changed: 726 additions & 239 deletions

File tree

Locals/Directory.Packages.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<ItemGroup>
44
<PackageVersion Include="Genbox.FastFilter" Version="1.0.0-alpha.1" />
5-
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.10.0" />
5+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="5.3.0-2.final" />
66
<PackageVersion Include="System.Memory" Version="4.6.3" />
77
<PackageVersion Include="Spectre.Console" Version="0.54.0" />
88
<PackageVersion Include="System.CommandLine" Version="2.0.3" />

Src/FastData.BenchmarkHarness.Runner/packages.lock.json

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@
99
},
1010
"Microsoft.CodeAnalysis.Analyzers": {
1111
"type": "Transitive",
12-
"resolved": "3.3.4",
13-
"contentHash": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g=="
12+
"resolved": "5.3.0-2.final",
13+
"contentHash": "VzdevMuvWpgH5s7bj+Y8CHaAPvJvzdRjBL/f2bzCEugZIOFOCZfblsbHwbCJ3hUFvvrbbcLcTrLt6HIj3bngAw=="
1414
},
1515
"Microsoft.CodeAnalysis.Common": {
1616
"type": "Transitive",
17-
"resolved": "4.10.0",
18-
"contentHash": "7O4+dn0fNKykPpEB1i8/5EKzwD3fuu/shdbbnnsBmdiHMaBz6telOubDFwPwLQQ/PvOAWTFIWWTyAOmWvXRD2g==",
17+
"resolved": "5.3.0-2.final",
18+
"contentHash": "pFJLuTM+S24ezzQEJ3tYTbz9Sey1KOfSNJMQcILMYlpvEhwIq91IGe8qimeD7haYe2LAMAJoQqqIhrVUnlVNGQ==",
1919
"dependencies": {
20-
"Microsoft.CodeAnalysis.Analyzers": "3.3.4"
20+
"Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1"
2121
}
2222
},
2323
"Microsoft.Extensions.DependencyInjection.Abstractions": {
@@ -93,14 +93,15 @@
9393
"type": "Project",
9494
"dependencies": {
9595
"FastData.Generator": "[1.0.0, )",
96+
"Microsoft.CodeAnalysis.CSharp": "[5.3.0-2.final, )",
9697
"Mono.TextTemplating": "[3.0.0, )"
9798
}
9899
},
99100
"fastdata.internalshared": {
100101
"type": "Project",
101102
"dependencies": {
102103
"Docker.DotNet": "[3.125.15, )",
103-
"Microsoft.CodeAnalysis.CSharp": "[4.10.0, )",
104+
"Microsoft.CodeAnalysis.CSharp": "[5.3.0-2.final, )",
104105
"Newtonsoft.Json": "[13.0.4, )",
105106
"xunit.v3.extensibility.core": "[3.2.2, )"
106107
}
@@ -116,12 +117,12 @@
116117
},
117118
"Microsoft.CodeAnalysis.CSharp": {
118119
"type": "CentralTransitive",
119-
"requested": "[4.10.0, )",
120-
"resolved": "4.10.0",
121-
"contentHash": "iifqKy3KvCgPABHFbFlSxjEoE+OItZGuZ191NM/TWV750m1jMypr7BtrP65ET+OK2KNVupO8S8xCtxbNqw056A==",
120+
"requested": "[5.3.0-2.final, )",
121+
"resolved": "5.3.0-2.final",
122+
"contentHash": "8d5I7PAkaH4J6yqGerBiXvxxhwNfrvRaAcCFb8cdiInnLibjry/wKahMJUgcRrv1ejDXAKRZb3ChtztjS5gDlw==",
122123
"dependencies": {
123-
"Microsoft.CodeAnalysis.Analyzers": "3.3.4",
124-
"Microsoft.CodeAnalysis.Common": "[4.10.0]"
124+
"Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1",
125+
"Microsoft.CodeAnalysis.Common": "[5.3.0-2.final]"
125126
}
126127
},
127128
"Microsoft.Extensions.Logging.Abstractions": {

Src/FastData.Benchmarks/packages.lock.json

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,15 @@
5353
},
5454
"Microsoft.CodeAnalysis.Analyzers": {
5555
"type": "Transitive",
56-
"resolved": "3.11.0",
57-
"contentHash": "v/EW3UE8/lbEYHoC2Qq7AR/DnmvpgdtAMndfQNmpuIMx/Mto8L5JnuCfdBYtgvalQOtfNCnxFejxuRrryvUTsg=="
56+
"resolved": "5.3.0-2.final",
57+
"contentHash": "VzdevMuvWpgH5s7bj+Y8CHaAPvJvzdRjBL/f2bzCEugZIOFOCZfblsbHwbCJ3hUFvvrbbcLcTrLt6HIj3bngAw=="
5858
},
5959
"Microsoft.CodeAnalysis.Common": {
6060
"type": "Transitive",
61-
"resolved": "4.14.0",
62-
"contentHash": "PC3tuwZYnC+idaPuoC/AZpEdwrtX7qFpmnrfQkgobGIWiYmGi5MCRtl5mx6QrfMGQpK78X2lfIEoZDLg/qnuHg==",
61+
"resolved": "5.3.0-2.final",
62+
"contentHash": "pFJLuTM+S24ezzQEJ3tYTbz9Sey1KOfSNJMQcILMYlpvEhwIq91IGe8qimeD7haYe2LAMAJoQqqIhrVUnlVNGQ==",
6363
"dependencies": {
64-
"Microsoft.CodeAnalysis.Analyzers": "3.11.0"
64+
"Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1"
6565
}
6666
},
6767
"Microsoft.Diagnostics.NETCore.Client": {
@@ -193,14 +193,15 @@
193193
"type": "Project",
194194
"dependencies": {
195195
"FastData.Generator": "[1.0.0, )",
196+
"Microsoft.CodeAnalysis.CSharp": "[5.3.0-2.final, )",
196197
"Mono.TextTemplating": "[3.0.0, )"
197198
}
198199
},
199200
"fastdata.internalshared": {
200201
"type": "Project",
201202
"dependencies": {
202203
"Docker.DotNet": "[3.125.15, )",
203-
"Microsoft.CodeAnalysis.CSharp": "[4.10.0, )",
204+
"Microsoft.CodeAnalysis.CSharp": "[5.3.0-2.final, )",
204205
"Newtonsoft.Json": "[13.0.4, )",
205206
"xunit.v3.extensibility.core": "[3.2.2, )"
206207
}
@@ -216,12 +217,12 @@
216217
},
217218
"Microsoft.CodeAnalysis.CSharp": {
218219
"type": "CentralTransitive",
219-
"requested": "[4.10.0, )",
220-
"resolved": "4.14.0",
221-
"contentHash": "568a6wcTivauIhbeWcCwfWwIn7UV7MeHEBvFB2uzGIpM2OhJ4eM/FZ8KS0yhPoNxnSpjGzz7x7CIjTxhslojQA==",
220+
"requested": "[5.3.0-2.final, )",
221+
"resolved": "5.3.0-2.final",
222+
"contentHash": "8d5I7PAkaH4J6yqGerBiXvxxhwNfrvRaAcCFb8cdiInnLibjry/wKahMJUgcRrv1ejDXAKRZb3ChtztjS5gDlw==",
222223
"dependencies": {
223-
"Microsoft.CodeAnalysis.Analyzers": "3.11.0",
224-
"Microsoft.CodeAnalysis.Common": "[4.14.0]"
224+
"Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1",
225+
"Microsoft.CodeAnalysis.Common": "[5.3.0-2.final]"
225226
}
226227
},
227228
"Microsoft.Extensions.Logging.Abstractions": {

Src/FastData.Cli.Tests/packages.lock.json

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,15 @@
8282
},
8383
"Microsoft.CodeAnalysis.Analyzers": {
8484
"type": "Transitive",
85-
"resolved": "3.3.4",
86-
"contentHash": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g=="
85+
"resolved": "5.3.0-2.final",
86+
"contentHash": "VzdevMuvWpgH5s7bj+Y8CHaAPvJvzdRjBL/f2bzCEugZIOFOCZfblsbHwbCJ3hUFvvrbbcLcTrLt6HIj3bngAw=="
8787
},
8888
"Microsoft.CodeAnalysis.Common": {
8989
"type": "Transitive",
90-
"resolved": "4.10.0",
91-
"contentHash": "7O4+dn0fNKykPpEB1i8/5EKzwD3fuu/shdbbnnsBmdiHMaBz6telOubDFwPwLQQ/PvOAWTFIWWTyAOmWvXRD2g==",
90+
"resolved": "5.3.0-2.final",
91+
"contentHash": "pFJLuTM+S24ezzQEJ3tYTbz9Sey1KOfSNJMQcILMYlpvEhwIq91IGe8qimeD7haYe2LAMAJoQqqIhrVUnlVNGQ==",
9292
"dependencies": {
93-
"Microsoft.CodeAnalysis.Analyzers": "3.3.4"
93+
"Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1"
9494
}
9595
},
9696
"Microsoft.CodeCoverage": {
@@ -271,14 +271,15 @@
271271
"type": "Project",
272272
"dependencies": {
273273
"FastData.Generator": "[1.0.0, )",
274+
"Microsoft.CodeAnalysis.CSharp": "[5.3.0-2.final, )",
274275
"Mono.TextTemplating": "[3.0.0, )"
275276
}
276277
},
277278
"fastdata.internalshared": {
278279
"type": "Project",
279280
"dependencies": {
280281
"Docker.DotNet": "[3.125.15, )",
281-
"Microsoft.CodeAnalysis.CSharp": "[4.10.0, )",
282+
"Microsoft.CodeAnalysis.CSharp": "[5.3.0-2.final, )",
282283
"Newtonsoft.Json": "[13.0.4, )",
283284
"xunit.v3.extensibility.core": "[3.2.2, )"
284285
}
@@ -294,12 +295,12 @@
294295
},
295296
"Microsoft.CodeAnalysis.CSharp": {
296297
"type": "CentralTransitive",
297-
"requested": "[4.10.0, )",
298-
"resolved": "4.10.0",
299-
"contentHash": "iifqKy3KvCgPABHFbFlSxjEoE+OItZGuZ191NM/TWV750m1jMypr7BtrP65ET+OK2KNVupO8S8xCtxbNqw056A==",
298+
"requested": "[5.3.0-2.final, )",
299+
"resolved": "5.3.0-2.final",
300+
"contentHash": "8d5I7PAkaH4J6yqGerBiXvxxhwNfrvRaAcCFb8cdiInnLibjry/wKahMJUgcRrv1ejDXAKRZb3ChtztjS5gDlw==",
300301
"dependencies": {
301-
"Microsoft.CodeAnalysis.Analyzers": "3.3.4",
302-
"Microsoft.CodeAnalysis.Common": "[4.10.0]"
302+
"Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1",
303+
"Microsoft.CodeAnalysis.Common": "[5.3.0-2.final]"
303304
}
304305
},
305306
"Microsoft.Extensions.Logging.Abstractions": {

Src/FastData.Cli/packages.lock.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,19 @@
128128
"resolved": "10.0.103",
129129
"contentHash": "QoiCMcPuxC6eqRQmrmF9zBY96ejIznXtve/lJJbonGD9I5Aygf2AUCOWslGiCEtBbfWRSuUnepBjuuVOdAl5ag=="
130130
},
131+
"Microsoft.CodeAnalysis.Analyzers": {
132+
"type": "Transitive",
133+
"resolved": "5.3.0-2.final",
134+
"contentHash": "VzdevMuvWpgH5s7bj+Y8CHaAPvJvzdRjBL/f2bzCEugZIOFOCZfblsbHwbCJ3hUFvvrbbcLcTrLt6HIj3bngAw=="
135+
},
136+
"Microsoft.CodeAnalysis.Common": {
137+
"type": "Transitive",
138+
"resolved": "5.3.0-2.final",
139+
"contentHash": "pFJLuTM+S24ezzQEJ3tYTbz9Sey1KOfSNJMQcILMYlpvEhwIq91IGe8qimeD7haYe2LAMAJoQqqIhrVUnlVNGQ==",
140+
"dependencies": {
141+
"Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1"
142+
}
143+
},
131144
"Microsoft.Extensions.DependencyInjection.Abstractions": {
132145
"type": "Transitive",
133146
"resolved": "10.0.3",
@@ -182,9 +195,20 @@
182195
"type": "Project",
183196
"dependencies": {
184197
"FastData.Generator": "[1.0.0, )",
198+
"Microsoft.CodeAnalysis.CSharp": "[5.3.0-2.final, )",
185199
"Mono.TextTemplating": "[3.0.0, )"
186200
}
187201
},
202+
"Microsoft.CodeAnalysis.CSharp": {
203+
"type": "CentralTransitive",
204+
"requested": "[5.3.0-2.final, )",
205+
"resolved": "5.3.0-2.final",
206+
"contentHash": "8d5I7PAkaH4J6yqGerBiXvxxhwNfrvRaAcCFb8cdiInnLibjry/wKahMJUgcRrv1ejDXAKRZb3ChtztjS5gDlw==",
207+
"dependencies": {
208+
"Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1",
209+
"Microsoft.CodeAnalysis.Common": "[5.3.0-2.final]"
210+
}
211+
},
188212
"Microsoft.Extensions.Logging.Abstractions": {
189213
"type": "CentralTransitive",
190214
"requested": "[10.0.3, )",

Src/FastData.Examples/packages.lock.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,19 @@
22
"version": 2,
33
"dependencies": {
44
"net10.0": {
5+
"Microsoft.CodeAnalysis.Analyzers": {
6+
"type": "Transitive",
7+
"resolved": "5.3.0-2.final",
8+
"contentHash": "VzdevMuvWpgH5s7bj+Y8CHaAPvJvzdRjBL/f2bzCEugZIOFOCZfblsbHwbCJ3hUFvvrbbcLcTrLt6HIj3bngAw=="
9+
},
10+
"Microsoft.CodeAnalysis.Common": {
11+
"type": "Transitive",
12+
"resolved": "5.3.0-2.final",
13+
"contentHash": "pFJLuTM+S24ezzQEJ3tYTbz9Sey1KOfSNJMQcILMYlpvEhwIq91IGe8qimeD7haYe2LAMAJoQqqIhrVUnlVNGQ==",
14+
"dependencies": {
15+
"Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1"
16+
}
17+
},
518
"Microsoft.Extensions.DependencyInjection.Abstractions": {
619
"type": "Transitive",
720
"resolved": "10.0.3",
@@ -34,9 +47,20 @@
3447
"type": "Project",
3548
"dependencies": {
3649
"FastData.Generator": "[1.0.0, )",
50+
"Microsoft.CodeAnalysis.CSharp": "[5.3.0-2.final, )",
3751
"Mono.TextTemplating": "[3.0.0, )"
3852
}
3953
},
54+
"Microsoft.CodeAnalysis.CSharp": {
55+
"type": "CentralTransitive",
56+
"requested": "[5.3.0-2.final, )",
57+
"resolved": "5.3.0-2.final",
58+
"contentHash": "8d5I7PAkaH4J6yqGerBiXvxxhwNfrvRaAcCFb8cdiInnLibjry/wKahMJUgcRrv1ejDXAKRZb3ChtztjS5gDlw==",
59+
"dependencies": {
60+
"Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1",
61+
"Microsoft.CodeAnalysis.Common": "[5.3.0-2.final]"
62+
}
63+
},
4064
"Microsoft.Extensions.Logging.Abstractions": {
4165
"type": "CentralTransitive",
4266
"requested": "[10.0.3, )",

Src/FastData.Generator.CPlusPlus.TestHarness/packages.lock.json

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -114,15 +114,15 @@
114114
},
115115
"Microsoft.CodeAnalysis.Analyzers": {
116116
"type": "Transitive",
117-
"resolved": "3.3.4",
118-
"contentHash": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g=="
117+
"resolved": "5.3.0-2.final",
118+
"contentHash": "VzdevMuvWpgH5s7bj+Y8CHaAPvJvzdRjBL/f2bzCEugZIOFOCZfblsbHwbCJ3hUFvvrbbcLcTrLt6HIj3bngAw=="
119119
},
120120
"Microsoft.CodeAnalysis.Common": {
121121
"type": "Transitive",
122-
"resolved": "4.10.0",
123-
"contentHash": "7O4+dn0fNKykPpEB1i8/5EKzwD3fuu/shdbbnnsBmdiHMaBz6telOubDFwPwLQQ/PvOAWTFIWWTyAOmWvXRD2g==",
122+
"resolved": "5.3.0-2.final",
123+
"contentHash": "pFJLuTM+S24ezzQEJ3tYTbz9Sey1KOfSNJMQcILMYlpvEhwIq91IGe8qimeD7haYe2LAMAJoQqqIhrVUnlVNGQ==",
124124
"dependencies": {
125-
"Microsoft.CodeAnalysis.Analyzers": "3.3.4"
125+
"Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1"
126126
}
127127
},
128128
"Microsoft.Extensions.DependencyInjection.Abstractions": {
@@ -170,14 +170,15 @@
170170
"type": "Project",
171171
"dependencies": {
172172
"FastData.Generator": "[1.0.0, )",
173+
"Microsoft.CodeAnalysis.CSharp": "[5.3.0-2.final, )",
173174
"Mono.TextTemplating": "[3.0.0, )"
174175
}
175176
},
176177
"fastdata.internalshared": {
177178
"type": "Project",
178179
"dependencies": {
179180
"Docker.DotNet": "[3.125.15, )",
180-
"Microsoft.CodeAnalysis.CSharp": "[4.10.0, )",
181+
"Microsoft.CodeAnalysis.CSharp": "[5.3.0-2.final, )",
181182
"Newtonsoft.Json": "[13.0.4, )",
182183
"xunit.v3.extensibility.core": "[3.2.2, )"
183184
}
@@ -193,12 +194,12 @@
193194
},
194195
"Microsoft.CodeAnalysis.CSharp": {
195196
"type": "CentralTransitive",
196-
"requested": "[4.10.0, )",
197-
"resolved": "4.10.0",
198-
"contentHash": "iifqKy3KvCgPABHFbFlSxjEoE+OItZGuZ191NM/TWV750m1jMypr7BtrP65ET+OK2KNVupO8S8xCtxbNqw056A==",
197+
"requested": "[5.3.0-2.final, )",
198+
"resolved": "5.3.0-2.final",
199+
"contentHash": "8d5I7PAkaH4J6yqGerBiXvxxhwNfrvRaAcCFb8cdiInnLibjry/wKahMJUgcRrv1ejDXAKRZb3ChtztjS5gDlw==",
199200
"dependencies": {
200-
"Microsoft.CodeAnalysis.Analyzers": "3.3.4",
201-
"Microsoft.CodeAnalysis.Common": "[4.10.0]"
201+
"Microsoft.CodeAnalysis.Analyzers": "5.3.0-2.25625.1",
202+
"Microsoft.CodeAnalysis.Common": "[5.3.0-2.final]"
202203
}
203204
},
204205
"Microsoft.Extensions.Logging.Abstractions": {

Src/FastData.Generator.CPlusPlus/CPlusPlusCodeGenerator.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,17 @@ protected override void AppendFooter<T>(StringBuilder sb, GeneratorConfigBase ge
7171

7272
private sealed class TemplateBasedOutputWriter<TKey, TValue>(IContext context) : OutputWriter<TKey>
7373
{
74+
private readonly TemplateManager _manager = new TemplateManager("CPlusPlus", @"C:\Users\Genbox\AppData\Local\Temp\FastData\", true);
75+
private readonly IContext _context = context;
76+
7477
public override string Generate()
7578
{
76-
string raw = context.GetType().Name;
79+
string raw = _context.GetType().Name;
7780
int idx = raw.IndexOf("Context", StringComparison.Ordinal);
7881
string name = raw.Substring(0, idx) + "Code.t4";
7982
string source = File.ReadAllText(Path.Combine(AppContext.BaseDirectory, "Templates", "CPlusPlus", name));
8083

81-
return TemplateHelper.Render(this, name, source, new Dictionary<string, object?>(StringComparer.OrdinalIgnoreCase)
84+
return _manager.Render(this, name, source, new Dictionary<string, object?>(StringComparer.OrdinalIgnoreCase)
8285
{
8386
{
8487
"Model", new TemplateModel
@@ -104,15 +107,15 @@ public override string Generate()
104107
GetValueTypeName = () => typeof(TValue).IsPrimitive ? ValueTypeName : ValueTypeName + "*"
105108
}
106109
},
107-
{ "Context", context },
110+
{ "Context", _context },
108111
{ "Shared", Shared },
109112
{ "Data", CreateContextModel() }
110113
});
111114
}
112115

113116
private ITemplateData? CreateContextModel()
114117
{
115-
switch (context)
118+
switch (_context)
116119
{
117120
case ArrayContext<TKey, TValue> arrayCtx:
118121
return new ArrayTemplateData
@@ -248,7 +251,7 @@ public override string Generate()
248251
return null;
249252

250253
default:
251-
throw new InvalidOperationException("No template mapping found for context type: " + context.GetType().FullName);
254+
throw new InvalidOperationException("No template mapping found for context type: " + _context.GetType().FullName);
252255
}
253256
}
254257

0 commit comments

Comments
 (0)