-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathImmArrayConstruction.cs
More file actions
37 lines (33 loc) · 1020 Bytes
/
ImmArrayConstruction.cs
File metadata and controls
37 lines (33 loc) · 1020 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
namespace Xledger.Collections.Bench;
[MemoryDiagnoser(displayGenColumns: false)]
[SimpleJob(RuntimeMoniker.Net48)]
[SimpleJob(RuntimeMoniker.Net80)]
[SimpleJob(RuntimeMoniker.Net10_0)]
public class ImmArrayConstruction {
[Params(300)]
public int Length;
[Benchmark(Baseline = true)]
public string[] NewArray() {
var arr = new string[this.Length];
for (int i = 0; i < arr.Length; ++i) {
arr[i] = Guid.NewGuid().ToString();
}
return arr;
}
[Benchmark]
public ImmArray<string> ToImmArray() {
var arr = new string[this.Length];
for (int i = 0; i < arr.Length; ++i) {
arr[i] = Guid.NewGuid().ToString();
}
return arr.ToImmArray();
}
[Benchmark]
public ImmArray<string> ImmArray_Build() {
return ImmArray.Build<string>(arr => {
for (int i = 0; i < arr.Length; ++i) {
arr[i] = Guid.NewGuid().ToString();
}
}, length: this.Length);
}
}