Skip to content

Commit 481d0ac

Browse files
Added first 2 benchmarks. First serializes feature collections with a changing amount of features (100000 and 1000000). And second serializes a simple linestring
1 parent e6dc607 commit 481d0ac

3 files changed

Lines changed: 22 additions & 70 deletions

File tree

src/GeoJSON.Text.Test.Benchmark/BenchmarkDeserialize.cs

Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 20 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,50 @@
11
using BenchmarkDotNet.Attributes;
22
using BenchmarkDotNet.Jobs;
3-
using System;
43

54
using System.Collections.Generic;
6-
using System.Security.Cryptography;
75

86
namespace GeoJSON.Text.Test.Benchmark
97
{
10-
[SimpleJob(RuntimeMoniker.Net60)]
8+
[SimpleJob(RuntimeMoniker.Net60, baseline:true)]
119
[SimpleJob(RuntimeMoniker.Net50)]
1210
[SimpleJob(RuntimeMoniker.NetCoreApp31)]
11+
[MemoryDiagnoser]
1312
[RPlotExporter]
1413
public class BenchmarkSerializeFeatureCollectionLinestring
1514
{
1615
// GeoJson.NET
17-
private Net.Feature.FeatureCollection featureCollectionGeoJsonNET;
16+
private Net.Feature.FeatureCollection featureCollectionGeoJsonNET = new Net.Feature.FeatureCollection();
1817

1918
// GeoJson.Text
20-
private Text.Feature.FeatureCollection featureCollectionGeoJsonTEXT;
19+
private Text.Feature.FeatureCollection featureCollectionGeoJsonTEXT = new Text.Feature.FeatureCollection();
2120

22-
[Params(1000, 10000, 100000)]
21+
[Params(100000, 1000000)]
2322
public int N;
2423

25-
public BenchmarkSerializeFeatureCollectionLinestring()
24+
[GlobalSetup]
25+
public void Setup()
2626
{
27-
var featuresNET = new List<Net.Feature.Feature>();
28-
var featuresTEXT = new List<Text.Feature.Feature>();
29-
27+
var coordinates1 = new double[] { 10, 50 };
28+
var coordinates2 = new double[] { 10, 50 };
29+
var coordinates3 = new double[] { 10, 50 };
30+
var coordinates4 = new double[] { 10, 50 };
31+
var line = new List<IEnumerable<double>> { coordinates1, coordinates2, coordinates3, coordinates4 };
3032
for (int i = 0; i< N; i++)
3133
{
32-
var lineCoordinates = new List<List<double>>
33-
{
34-
new List<double>
35-
{
36-
-0.26092529296875,
37-
51.470691106434884
38-
},
39-
};
40-
41-
var linestringNET = new Net.Geometry.LineString(lineCoordinates);
42-
var linestringTEXT = new Text.Geometry.LineString(lineCoordinates);
34+
var linestringNET = new Net.Geometry.LineString(line);
35+
GeoJSON.Net.Feature.Feature featureNET = new Net.Feature.Feature(linestringNET);
36+
featureCollectionGeoJsonNET.Features.Add(featureNET);
4337

44-
var featureNET = new Net.Feature.Feature(linestringNET);
45-
var featureTEXT = new Text.Feature.Feature(linestringTEXT);
46-
47-
featuresNET.Add(featureNET);
48-
featuresTEXT.Add(featureTEXT);
38+
var linestringTEXT = new Text.Geometry.LineString(line);
39+
Text.Feature.Feature featureTEXT = new Text.Feature.Feature(linestringTEXT);
40+
featureCollectionGeoJsonTEXT.Features.Add(featureTEXT);
4941
}
50-
51-
featureCollectionGeoJsonNET = new Net.Feature.FeatureCollection(featuresNET);
52-
featureCollectionGeoJsonTEXT = new Text.Feature.FeatureCollection(featuresTEXT);
5342
}
5443

5544
[Benchmark]
56-
public void SerializeNewtonsoft()
57-
{
58-
Newtonsoft.Json.JsonConvert.SerializeObject(featureCollectionGeoJsonNET);
59-
}
45+
public string SerializeNewtonsoft() => Newtonsoft.Json.JsonConvert.SerializeObject(featureCollectionGeoJsonNET);
6046

6147
[Benchmark]
62-
public void SerializeSystemTextJson()
63-
{
64-
System.Text.Json.JsonSerializer.Serialize(featureCollectionGeoJsonTEXT);
65-
}
48+
public string SerializeSystemTextJson() => System.Text.Json.JsonSerializer.Serialize(featureCollectionGeoJsonTEXT);
6649
}
6750
}

src/GeoJSON.Text.Test.Benchmark/Program.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ public class Program
88
{
99
public static void Main(string[] args)
1010
{
11-
//var summary = BenchmarkRunner.Run<BenchmarkDeserialize>();
12-
//var summary2 = BenchmarkRunner.Run<BenchmarkSerializeFeatureCollectionLinestring>();
11+
// Serialize
12+
var summary1 = BenchmarkRunner.Run<BenchmarkSerializeFeatureCollectionLinestring>();
1313
var summary2 = BenchmarkRunner.Run<BenchmarkSerializeFeatureLinestring>();
1414
}
1515
}

0 commit comments

Comments
 (0)