2012-12-13 1 views
0

1 주일 전에 교수님이 쓰레기 수거와 그 반응에 대해 이야기했습니다. 기본적으로 그는 가비지 콜렉션을 사용하면 코드가 실행되기 전에 항상 약간의 지연이 발생한다고 말했습니다.Garabage collection - Responsiveness

이제 사용자는 매우 작기 때문에 지연을 인식하지 못한다고 말할 수 있습니다.

나는 최종 학사 시험을 위해 게임 엔진을 연구 중이며, 현재 내 엔진을 위해 선택할 스크립팅 언어를 결정하고 있습니다.


이제 다음 상황이 발생했습니다. 1 인칭 카메라로 게임을 만들 수 있습니다. 또한 gamelogic은 가비지 수집을 사용하는 언어로 작성되었습니다.

가비지 수집이 가비지 수집이없는 언어로 작성된 게임을하는 것보다 많은 입력 지연이 발생한다는 것을 의미하지 않겠습니까?

지연이 발생하는 시스템이 너무 많아서 입력 지연을 예측하기가 어렵습니다.

예 : input -> gamecode executing -> graphics rendering -> rendering on the screen.

내가 얼마나 지연시킬 지 예측할 수 있습니까? gc와 언어를 gc와 gc를 사용하지 않으면 어떻게됩니까?<1ms, <10ms <100ms

+2

whoa nelly 이것은 (으)로부터로드되었습니다. 나는 당신의 목적을 위해 말하기를, GCing은 큰 차이를 만들지 않을 것입니다. C와 같은 언어를 사용했다하더라도, 프로그램은'free' 할 때 메모리를 비우는 데 시간이 걸릴 필요가 있습니다. 어떤 언어로도 즉각적이지는 않습니다. " – thatidiotguy

+0

thatidiotguys 응답을 확대하면 언어에 사용되는 GC 방식에 따라 달라집니다. 예를 들어, 참조 횟수가 표시 및 스윕 (거친 말하기)보다 빠릅니다. – StoryTeller

+0

" 코드가 실행되기 전에 항상 약간의 지연이있을 것입니다. "아마도 JIT 컴파일과 GC를 혼동스럽게 만들었을 것입니다 ... –

답변

1

GC에 대한 유일한 "무서운"점은 (1) 코드가 진행됨에 따라 하나씩 처리하는 대신 많은 오브젝트를 한 번에 정리할 수 있기 때문에 느리게 느껴질 수 있다는 것입니다. (2) 예측 불가능한 (예측할 수 없을 정도로) (즉, 들리지 않을 정도로 끔찍하지 않은) 비 결정적입니다.

GC가 아닌 특정 순간에 발생하기 때문에 코드가 "지속적으로"느려지지는 않습니다. 실제로, GC가 아닌 경우 프로그램이 조금 더 빠르다고 말하고 싶습니다. 왜냐하면 외부 GC는 메모리 관리 메커니즘 (non-GC language)과 같은 객체를 정리하는 것을 방해하지 않기 때문에 GC 뒤에서는 대개 할당이 비 GC 언어보다 약간 빠름을 의미합니다.