unity의 메모리 최적화 관련 글을 보면 foreach를 사용하지 마라는 것을 자주 볼 수 있다.

이유는 foreach에서 메모리 할당을 발생시켜서 GC를 유발하기 때문이다.

 

이것은 C# 언어 자체의 문제가 아니고 mono쪽의 구현 문제이다.

C# 스펙 문서에도 foreach 최적화에 대해 언급이 있는데 mono에서 제대로 구현하지 않았다.

MS의 닷넷프레임워크에서는 이런 문제가 없다. 그리고 근래의 mono에도 없다.

 

unity는 오래된 버전의 mono를 사용해서 foreach가 문제가 된다.

 

다행히 얼마 전에 unity mono를 업그레이드 하겠다는 계획을 발표했다. 현재 개발자들이 테스트할 수 있는 버전이 나왔고 지금은 컴파일러 부분만 개선되었다(즉 라이브러리 업그레이드는 아직이다).

 

http://forum.unity3d.com/forums/experimental-scripting-previews.107/

이것을 설치해서 foreach를 사용해보면 문제가 해결된 것을 볼 수 있다.

 

장래에 unity를 공부할 때 오래된 글만 보면 실수 할 수 있으니 unity가 새 버전이 나올 때마다 잘 살펴보기 바란다.

 

 

출처: http://neue.cc/2016/08/05_537.html

번역 http://sitetrans.naver.net/?rel=http://neue.cc/2016/08/05_537.html&srcLang=ja&tarLang=ko

 

 

저작자 표시
신고
by 흥배 2016.08.25 08:00
| 1 |