option
의 이점을 잘 알고 있지만 성능상의 이유로 option
을 사용하지 않으려합니다. option
은 가비지 수집기에 대한 더 많은 작업을 의미하는 클래스의 형식을 래핑합니다.F # 형식의 필드를 null로 강제 설정
이 경우 특히 같은 상황에서 모두 Some
인 여러 필드가 있지만 터플이 클래스이기 때문에 튜플에 넣지 않으려 고합니다. 그리고 GC에 추가적인 스트레스를줍니다. . 그래서 나는 에 접근한다. 그 목적은 option
의 목적을 이겼다.
option
유형이 잠재적으로 null 인 참조로 처리되는 것을 알지 못하는 최적화가 없다면 null
을 사용하고 싶습니다. 내가 할 수있는 방법이 있니?
편집 : 내가하고있는 일을 확장하기 위해 나는 bounding volume hierarchy을 만들고 있는데, 이는 실제로 리프 노드에서만 데이터가있는 이진 트리입니다. 항목을 불변으로 유지하는 것이 성능상의 이유로 옵션이 아니며 차별화 된 공용체가 mutable
구성원을 가질 수 없기 때문에 차별화 된 공용체가 아닌 클래스로 구현합니다. 다시 GC 압력에 추가합니다.
어리석게도 기능적 언어이므로 각 노드 유형을 Node
상위 유형의 상속으로 처리 할 수 있습니다. Downcasting은 정확히 가장 빠른 작업은 아니지만 XNA와 WP7에 관한 한 거의 모든 것이 GC를 분노하는 것보다 낫습니다.
추가 된 GC 스트레스가 실제로 중요합니까? – svick
@svick 예, 불행히도 XNA 게임의 충돌 감지 용입니다. 이는 결국 WP7 또는 Xbox 360에서 실행될 수 있으며 둘 다 1 세대 GC를 사용한다는 의미입니다. –
"이며 GC에 추가적인 스트레스를줍니다." - 이걸 측정 해 봤어? –