[C# 벤치마크] C# Json Serialize, DeSerialize 벤치마크 측정

소개

안녕하세요. 오늘은 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

이 글을 공유하기

댓글

Designed by JB FACTORY