잡담

GC 언어는 대용량 데이터 처리에 적합하지 않은 언어

GC를 사용하는 언어들이 있다. Java, C#, ….  최근에 그 중 C#을 이용해 영상 처리를 공부하면서 코드를 만들어보고 있다. 문제가 있는데, 영상 처리를 위해 이미지의 복사본을 여러 개 만들고 수행하는 와중에 들어가는 비용이 장난이 아니다. 1920 * 1080 이미지에 대한 4배 확대 및 필터 처리 등 모든 작업이 끝나면 최악의 경우 대략 4~5초 정도 걸린다. 거기에 32비트 환경에서는 즉각즉각 작업이 끝날 때마다 GC를 걸어주지 않으면 메모리를 너무 많이 써서 더 이상 할당이 안 되는 문제도 있다. 사실 GC.Collect ()나 System.gc ()같은 함수들은 바로 GC를 실행하는 것이 아니라 “할 수도 있다” 정도의 일을 하기 때문에 GC 실행이 안 될 수도 있는 문제도 있다.

C나 C++같은 언어들은 메모리를 할당하고 삭제하는 작업이 즉각즉각 이뤄지고 각 명령의 실행 속도도 인터프리터 언어보다 빠르기 때문에 실시간 영상처리를 위해서는 GC 언어를 사용하지 않을 것을 추천한다. 물론 C#은 일반 인터프리터 언어가 아니라 JIT 컴파일러 언어이기 때문에 한 번 실행한 코드는 매우 빠르게 실행이 가능하지만 JIT 컴파일러 언어에도 한계가 있다.

다음 테스트 코드는 C#이 아닌 C++로 작성해볼 생각이다. 전에 C++로 비슷한 걸 작성해보다가 실패하긴 했지만 이번엔 잘 해봐야지.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.