Ciekawy temat reputed performance gains w xobotos, sprawdziłem drzewo binarne benchmark code.XobotOS: Dlaczego benchmark drzewa binarnego C# używa struktury struct?
wersjaJava z binary tree node jest:
private static class TreeNode
{
private TreeNode left, right;
private int item;
}
C# version jest:
struct TreeNode
{
class Next
{
public TreeNode left, right;
}
private Next next;
private int item;
}
Zastanawiam się, co zaletą korzystania struct tutaj jest, ponieważ następnego i poprzedniego wskaźników nadal są zamknięte w klasie.
Cóż, istnieją jeden-liści węzłów są czystymi typami wartości, ponieważ nie potrzebują lewej i prawej wskazówki. W typowym drzewie binarnym, w którym połowa węzłów to liście, oznacza to 50% zmniejszenie liczby obiektów. Mimo to wzrost wydajności jest znacznie większy.
Pytanie: Czy jest coś więcej?
Ponadto, ponieważ nie myślałem o zdefiniowaniu węzłów drzewa w ten sposób w języku C# (dzięki Xamarin!), Jakie inne struktury danych mogą skorzystać na użyciu struktur w nieoczywisty sposób? (Nawet jeśli jest to trochę nie na temat i nie jest otwarte).
A jaki jest wzrost wydajności, o którym wspomniałeś? – leppie
Patrząc teraz na kod, jest jasne, że ktoś skopiował go z kodu C, nie wiedząc dokładnie, co robi (a przynajmniej robiąc to w bardzo absurdalny sposób). – leppie