Przeczytałem, że tworzenie klasy sealed
w języku C# jest wskazane w scenariuszach o wysokiej wydajności, ponieważ zwalnia kompilator, aby dokonać pewnych optymalizacji (np. Inlining obiektów pobierających właściwości), że nie byłby w stanie zrobić inaczej. Czy to samo dotyczy NotInheritable
w VB.NET? Zgaduję, że tak, ale publikuję to pytanie na wypadek, gdyby ktoś inny już zbadał sprawę i poznał odpowiedź.Czy utworzenie klasy NotInheritable w VB.NET oferuje takie same (potencjalne) optymalizacje kompilatora, jak w C#?
5
A
Odpowiedz
8
Tak, wygenerowana IL dla sealed
w C# jest identyczna z NotInheritable
w VB.NET i te potencjalne optymalizacje będą wykonane przez kompilator JIT, który będzie się odbywał niezależnie od oryginalnego języka.
Wynika z tego, co mówisz (myślę), że kompilator JIT nie jest w stanie określić, czy klasa pochodna istnieje w środowisku wykonawczym. Mogę docenić, że nie jest to łatwe do wykonania (poza klasami publicznymi, których hierarchia może przekraczać złożenia), ale czy nie jest to coś, co JIT ma poprawić w porównaniu z tradycyjną optymalizacją w czasie kompilacji? –