2010-05-18 5 views
2

실례합니다. 컴퓨터 엔지니어는 아니지만 생물학의 뿌리가 있습니다. 필자는 사전 할당 객체 (Patrick Burns의 SO 및 R inferno에 대한 칭호)에 대한 훌륭한 팬이되어 제 코딩 습관을 개선하고 싶습니다. 이 사실 대신, 나는 더 효율적인 함수를 작성하는 것에 대해 생각 해왔고 다음과 같은 질문을 가지고있다.깔끔한/효율적인 기능 쓰기 (가비지 수집) R

다음 루프가 시작될 때 덮어 쓰게 될 변수를 제거하면 어떤 이점이 있습니까? 아니면 그냥 시간 낭비입니까? 인수를 위해, 이전 변수와 새 변수의 크기가 매우 비슷하거나 동일하다고 가정합시다.

답변

1

아니요. 자동 가비지 수집이 처리됩니다.

2

정말 케이스의 특성에 달려 있다고 생각합니다. 어떤 상황에서는 객체가 크면 rm()하는 것이 좋습니다. 특히 필요하지 않으면 덮어 쓰기 전에해야 할 일이 많이 있습니다. 그러나 다시 한번, 전략은 계산 시간면에서 비용이 많이들 것이라는 점을 상황을 생각하는 것은 불가능하지 않습니다.

정말로 가치있는 것인지를 알 수있는 유일한 방법은 두 가지 방법 모두 시도하고 system.time()을 사용하여 확인하는 것입니다.

+0

+1'system.time()'을 사용하여 성능을 확인하십시오. 또한 코드 프로파일 링을 위해'Rprof' 나'profR'과 같은 것을 볼 수 있습니다. 예를 들어이 질문을보십시오 : http://stackoverflow.com/questions/2476946/creating-large-xml-trees-in-r. – Shane

+0

"rm (list = ls())"로 모든 개체를 제거한 후에 사용 된 메모리는 변경되지 않습니다. 가능한 원인은 무엇입니까? – pengchy