Unity 엔진을 사용하고 있음에도 불구하고
XML
에 레벨 정보를 담아놓고 실행시에 파싱해서 쓰고 있었는데요,
XML 파일 용량이 250KB에 달하니까 파싱에
1분이 걸리더라구요;;;
게임 로딩하는데 무려 1분
=ㅁ=);;;!!!!!
그래서 모든 스케쥴을 제쳐놓고 로딩 최적화 작업에 돌입했었습니다.
일단
문자열로 되어있는 XML 특성상 반복적으로 사용되는 문자열이 무진장 많으므로
Symbol 테이블을 만들어서 인덱스를 할당해놓고
실제 그 문자열을 만나면 해당 인덱스로 교체해서 파일에 저장하는 것이죠.
그렇게 되면
XML 문자열을 일일이 파싱하는 대신
32바이트 단위로 Symbol들을 읽어내서 Symbol 테이블에서 찾아서 대체하게 하는
전략.
일종의 컴파일이라고 볼 수 있겠네요^^
그
런데 문제가 발생.
Unity 엔진은 Binary Asset 을 Import 하지 못한다는 것이죠;;;
Text 형태의
Asset 은 TextAsset 이라는걸로 지원을 하고 있습니다.
그래서 확장자를 .txt 로 만들어서 해놓으니 읽기는
읽는데,
요놈이 어떤 식으로 Import 를 하는지 원본 내용이 깨집니다;;;
심히 난감하여 방황하던중 포기하지 않고
이번에는 16바이트로 Symbol 인코딩을 하기로 했어요.
그랬더니?
대성공!!!
1분이나 걸리던 로딩이 단 3초만에 끝납니다 ㅜㅜㅜㅜㅜ
이런
보람에 플머하는가 싶습니다 ㅋ
이제 큰 문제 하나 넘겼으니 마무리 작업 가속화^^
첫댓글 ㅊㅋㅊㅋ
아..지금 완전 초짜라 무슨소리인지는 모르겠지만..나중보면 뭔가 큰 도움이 될듯한 글같아요 ㅎ
와~ 축하드립니다.^^
XML이 편하기는 한데 파싱속도는 정말로 최악이죠.