[C# 벤치마크] C# XML Serialize, DeSerialize 벤치마크 성능 측정
- C#/C# 문법
- 2021. 12. 15. 18:11
소개
안녕하세요. 오늘은 C#에서 BenchMarkDotNet을 이용하여 XML 직렬화, 역직렬화 벤치마크 성능 측정을 하려고 합니다.
예제 코드를 작성하여 어느정도 성능이 나오는지 확인하도록 하겠습니다.
XML 직렬화, 역직렬화 벤치마크 코드 작성
- C#에서 XML 직렬화, 역직렬화 성능 체크하기 위한 벤치마크 테스트 코드 작성을 하였습니다.
- BenchMarkDotNet 을 이용하여 벤치마크 성능을 테스트 하였습니다.
- 직렬화, 역직렬화는 각각 1번, 100번, 10000번 테스트 진행하였습니다.
예제 코드
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
using System;
using System.IO;
using System.Text;
using System.Xml.Serialization;
namespace BenchMarkTest
{
class Program
{
static void Main(string[] args)
{
var summary = BenchmarkRunner.Run<SerializeBenchMarkTest>();
}
}
public class Config
{
public Guid Id;
public string IP;
public string PassWorrd;
public string SID;
}
[MemoryDiagnoser]
public class SerializeBenchMarkTest
{
[Params(1, 100, 10000)]
public int Iterations { get; set; }
public Config CreateXMLFile()
{
Config myConfig = new Config()
{
Id = Guid.NewGuid(),
IP = "127.0.0.1",
PassWorrd = "1234@asdf",
SID = "databaseOwner"
};
return myConfig;
}
public void SerializerXML(int iterations)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Config));
Config myConfig = CreateXMLFile();
for (int index = 0; index < iterations; index++)
{
using (MemoryStream xmlStream = new MemoryStream())
{
xmlSerializer.Serialize(xmlStream, myConfig);
}
}
}
public void DeSerializerXML(string xmlConfig, int iterations)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Config));
for (int index = 0; index < iterations; index++)
{
using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(xmlConfig)))
{
stream.Position = 0;
Config testObj = ((Config)xmlSerializer.Deserialize(stream));
}
}
}
[Benchmark]
public void SerializeXMLTest()
{
SerializerXML(Iterations);
}
[Benchmark]
public void DeSerializeXMLTest()
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Config));
string xmlConfig = string.Empty;
Config myConfig = CreateXMLFile();
using (MemoryStream xmlStream = new MemoryStream())
{
xmlSerializer.Serialize(xmlStream, myConfig);
xmlConfig = Encoding.UTF8.GetString(xmlStream.ToArray());
}
DeSerializerXML(xmlConfig, Iterations);
}
}
}
실행 결과
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] MessagePack 사용 방법 - 직렬화, 역직렬화 (0) | 2021.12.15 |
---|---|
[C# 벤치마크] C# Json Serialize, DeSerialize 벤치마크 측정 (0) | 2021.12.15 |
[C# 벤치마크] BenchMarkDotNet IntroBasic (0) | 2021.12.14 |
[C# 문법] C# 현재 디렉토리 위치 변경하는 방법 - Directory.SetCurrentDirectory 메서드 (0) | 2021.12.14 |
[C# 벤치마크] BenchMarkDotNet IntroArgument (0) | 2021.12.14 |
이 글을 공유하기