[C# 벤치마크] C# Json Serialize, DeSerialize 벤치마크 측정
- C#/C# 문법
- 2021. 12. 15. 19:18
소개
안녕하세요. 오늘은 C#에서 Json 형식으로 직렬화, 역직렬화 성능에 대해 벤치마크 측정을 하려고 합니다.
앞서 XML 관련하여 벤치마크 성능을 측정하였고, 이번 포스팅에서는 JSON에 대해서 성능 측정을 하도록 하겠습니다.
JSON 직렬화 역직렬화 벤치마크 코드 작성
- C#에서 JSON 직렬화, 역직렬화 성능 체크하기 위한 벤치마크 테스트 코드 작성을 하였습니다.
- 사용한 JSON NuGet Package는 System.Text.Json NuGet Package 를 사용하였습니다.
- BenchMarkDotNet 을 이용하여 벤치마크 성능을 테스트 하였습니다.
- JSON 직렬화, 역직렬화는 각각 1번, 100번, 10000번 테스트 진행하였습니다.
예제 코드
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
using System;
using System.Text.Json;
namespace BenchMarkTest
{
class Program
{
static void Main(string[] args)
{
var summary = BenchmarkRunner.Run<SerializeBenchMarkTest>();
}
}
public class ConfigJSON
{
public Guid Id { get; set; }
public string IP { get; set; }
public string PassWorrd { get; set; }
public string SID { get; set; }
}
[MemoryDiagnoser]
public class SerializeBenchMarkTest
{
[Params(1, 100, 10000)]
public int Iterations { get; set; }
public ConfigJSON CreateJSON()
{
ConfigJSON myConfig = new ConfigJSON()
{
Id = Guid.NewGuid(),
IP = "127.0.0.1",
PassWorrd = "1234@asdf",
SID = "databaseOwner"
};
return myConfig;
}
public void SerializerJSON(int iterations)
{
ConfigJSON config = CreateJSON();
for (int index = 0; index < iterations; index++)
{
var jsonString = JsonSerializer.Serialize(config);
}
}
public void DeSerializerJSON(int iterations)
{
ConfigJSON config = CreateJSON();
var jsonString = JsonSerializer.Serialize(config);
for (int index = 0; index < iterations; index++)
{
var jsonValue = JsonSerializer.Deserialize<ConfigJSON>(jsonString);
}
}
[Benchmark]
public void SerializeJsonTest()
{
SerializerJSON(Iterations);
}
[Benchmark]
public void DeSerializeJsonTest()
{
DeSerializerJSON(Iterations);
}
}
}
실행 결과
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] MessagePack ObservableCollection 직렬화, 역직렬화 (0) | 2021.12.16 |
---|---|
[C# 문법] MessagePack 사용 방법 - 직렬화, 역직렬화 (0) | 2021.12.15 |
[C# 벤치마크] C# XML Serialize, DeSerialize 벤치마크 성능 측정 (0) | 2021.12.15 |
[C# 벤치마크] BenchMarkDotNet IntroBasic (0) | 2021.12.14 |
[C# 문법] C# 현재 디렉토리 위치 변경하는 방법 - Directory.SetCurrentDirectory 메서드 (0) | 2021.12.14 |
이 글을 공유하기