Programuję grę przy użyciu C#, w związku z tym jestem bardzo zaniepokojony osiągami.Klasa VS ref Struct
Chciałbym wiedzieć, jakie są główne różnice, a jeśli to możliwe, kwestie związane z wydajnością korzystania z klasy do przekazywania danych w pobliżu lub ze struktury przekazanej przez odniesienie.
Nie chcę kopiować danych, ze względu na wydajność (przypuszczam, że przekazanie przez ref jest znacznie szybsze niż tutaj).
Wiem, że klasa jest zawsze przekazywane przez odniesienie i że struct jest przekazywana przez wartość, ale mówię o przekazywanie struktury przez odniesienie tutaj.
Przykładem danych pragnę przekazać:
public delegate void PathCompleteDelegate(List<PathFinderNode> path);
public struct PathFinderJob{
public PathCompleteDelegate callback;
public Vector3 start, end;
public PathSize unitSize;
public BoxCollider boxCollider;
}
W poprzednim przykładzie, stosując klasa zrobić różnicę? Jeśli tak, jaka byłaby różnica? Czy w tym przykładzie klasa byłaby szybsza niż struktura? Czemu?
Dziękuję. Joao Carlos
Czy próbowałeś profilowania wydajności obu metod? Jeśli struktura ma zasięg poza metodą, to i tak będzie na kupie (jak w, zawartej w klasie na stercie). Podejrzewam, że klasa lub ref struct mają taką samą wydajność w zakresie wywołań metod. –
Nie mam dużego doświadczenia profilowania i zrobiłem szybkie sprawdzanie profilowania przy użyciu wbudowanego profilera Unity3D, ale nie widziałem różnicy, jednak nie wiem, jak dobrze wbudowany profiler jest z tego typu "małą rybką" lub jeśli w ogóle zobaczy różnicę między wszystkimi innymi profilami związanymi z grą. –
Nie marnowałbym czasu na struktury podczas programowania gry w języku OO. Problemem ** I ** będzie stawić czoła, zanim problemy z wydajnością ** nie kończą ** gry. Klasy i obiekty zwiększają szybkość IMO. – Bitterblue