PLC Parser 성능 최적화
파싱 속도 개선
Stream-based, Incremental, AST 캐싱
메모리 최적화
On-demand, Weak Ref, Object Pooling
병렬 처리 전략
파일 레벨 병렬화
- 여러 PLC 파일 동시 파싱
- Task Parallel Library 활용
- CPU 코어 수만큼 병렬 실행
- 속도: 4코어 기준 3.5배 향상
섹션 레벨 병렬화
- Variable, Program, Device 섹션 병렬 파싱
- 독립적인 섹션 동시 처리
- 결과 Merge 단계 최소화
- 속도: 대용량 파일 2배 향상
변환 레벨 병렬화
- AST → Runtime 변환 병렬 실행
- System별 독립 변환
- DB Insert 배치 처리
- 속도: 100+ System 기준 5배 향상
캐싱 전략
| 캐시 레벨 | 대상 | TTL | 크기 제한 | 정책 |
|---|---|---|---|---|
| L1 (메모리) | AST, Runtime 객체 | 1시간 | 500MB | LRU |
| L2 (디스크) | 파싱 결과 (Serialized) | 24시간 | 5GB | LFU |
| L3 (DB) | ORM 객체 | 무제한 | 무제한 | 영구 |
벤치마크 결과
| 작업 | Before (초) | After (초) | 개선율 |
|---|---|---|---|
| LS XGK 파싱 (5MB) | 4.2 | 1.2 | ↓ 71% |
| S7 AWL 파싱 (3MB) | 3.5 | 0.8 | ↓ 77% |
| AB L5K 파싱 (10MB) | 12.0 | 2.5 | ↓ 79% |
| 전체 변환 (100개 System) | 45.0 | 9.5 | ↓ 79% |
3.5x
병렬 처리 속도
75%
메모리 절감
79%
전체 성능 개선
3
캐시 레벨