xobotos의 reputed performance gains에 대해 궁금해서 이진 트리 benchmark code을 확인했습니다.XobotOS : C# 바이너리 트리 벤치 마크가 구조체를 사용하는 이유는 무엇입니까?
는 binary tree node의자바 버전입니다 :
private static class TreeNode
{
private TreeNode left, right;
private int item;
}
C# version입니다 : 내가 궁금하네요
struct TreeNode
{
class Next
{
public TreeNode left, right;
}
private Next next;
private int item;
}
무엇을 다음 및 이전 포인터 이후 여기 구조체를 사용의 이점, 여전히 클래스에 캡슐화되어 있습니다.
글쎄, 왼쪽과 오른쪽 포인터가 필요 없기 때문에 하나의 리프 노드가 순수 값 유형입니다. 노드의 절반이 나뭇잎 인 전형적인 이진 트리에서는 개체 수를 50 % 줄입니다. 그래도 성능 향상 효과는 훨씬 더 커 보인다.
질문 : 더 이상 있습니까?
또한 C#에서이 방식으로 트리 노드를 정의 할 생각이 없었기 때문에 (Xamarin에게 감사드립니다!) 다른 데이터 구조가 비 구조적 구조로 구조를 사용하면 어떤 이점이 있습니까? (비록 조금 화제가되어 개방적으로 끝났지 만)
성능 향상은 무엇입니까? – leppie
코드를 살펴보면 누군가가 실제로 무엇을하고 있는지 (또는 적어도 매우 어리석은 방식으로) 알지 못하고 C 코드에서 코드를 복사 한 것이 확실합니다. – leppie