[C#] INI 파일 대량 데이터 빠르게 저장하는 방법
2025. 4. 17. 09:22ㆍ개발이야기
728x90
반응형
문제 상황
모델이나 설정 데이터를 100개 이상 저장해야 하는 경우, Write()를 순차적으로 호출하면 속도가 매우 느려질 수 있습니다. 특히 UI가 멈추거나, 사용자 경험이 저하되기도 합니다.
이를 해결하기 위해선 다음과 같은 방법이 효과적입니다:
1. 비동기 + 병렬 처리 구조
public async Task SaveModelListAsync(List<ModelData> models)
{
await Task.Run(() =>
{
Parallel.For(0, models.Count, i =>
{
var model = models[i];
IniFile ini = new IniFile($"Models/{i}.ini");
ini.Write("Info", "ModelNum", model.modelNum.ToString());
ini.Write("Info", "Type", ((int)model.type).ToString());
ini.Write("Info", "Method", ((int)model.pmMethod).ToString());
ini.Write("ROI", "TopLeftX", model.roi.topLeftX.ToString());
ini.Write("ROI", "TopLeftY", model.roi.topLeftY.ToString());
});
});
}
-. Task란?
Task는 비동기 작업을 수행할 때 사용하는 .NET의 클래스입니다.
Task.Run()은 백그라운드에서 작업을 실행하고, 메인 UI 스레드를 차단하지 않습니다.
- UI 멈춤 없이 작업 가능
- await 키워드로 완료 시점 제어 가능
-. Parallel.For란?
Parallel.For는 반복문을 병렬로 처리하는 .NET의 고속 루프입니다.
여러 개의 CPU 코어를 활용해 동시에 여러 작업을 처리합니다.
- 대량 반복 작업에 매우 유리
- 순차적인 처리보다 훨씬 빠름
2. 파일 IO 최적화 팁
- INI 파일이 많을 경우 Directory.CreateDirectory("Models")로 미리 폴더 생성
- 쓰기 전에 File.Exists() 체크로 중복 방지
- 불필요한 Write 호출 방지를 위해 값 변경 시만 저장하도록 조건 처리
복잡한 설정이 아니라면 INI 파일은 여전히 훌륭한 선택지입니다.
Win32 API만으로도 외부 라이브러리 없이 깔끔하게 처리할 수 있고,
C#에서는 위처럼 간단한 클래스만으로도 충분히 실무에 활용 가능합니다.
728x90
반응형
'개발이야기' 카테고리의 다른 글
[C#] 완전 입문 가이드 (쌩초보 가이드) (4) | 2025.04.17 |
---|---|
[C#] Task와 Parallel.For 설명 및 활용법 (0) | 2025.04.17 |
C#에서 INI 파일 읽고 쓰기 (0) | 2025.04.16 |
[Linux] 리눅스 완전 처음 시작하는 사람을 위한 가이드 (2) | 2025.04.16 |
[linux]리눅스 자주 쓰는 명령어(Command)3탄 (0) | 2024.04.24 |