2014-10-15 13 views
7

Ulepszyłem ReSharper i widząc błąd, którego wcześniej nie widziałem. Sprawdziłem, ale nie znalazłem nic o błędzie lub zasadniczym problemie, który sygnalizuje.Powolne tworzenie delegatów

** Edycja **: jak wskazano poniżej, jest to właściwie wtyczka "Heap Allocation Viewer", a nie sama ReSharper, która oznacza to jako błąd - choć to nie zmienia samego pytania.

Powolne tworzenie delegat: od interfejsu metoda „IPluginHandler”

ten występuje podczas zapisywania się do obsługi wtyczek do wydarzeń na agregatora zdarzeń.

public void Subscribe(IPluginHandler subscriber) 
{ 
    Executing += subscriber.OnExecuting; 
    // -- additional subscriptions -- 
} 

w powyższym kodu Executing to zdarzenie i subscriber.OnExecuting jest odpowiedni program obsługi zdarzeń dla zdarzenia.

Dla jasności jest to "miękki błąd" programu ReSharper, ponieważ kod będzie nadal budowany i uruchamiany zgodnie z oczekiwaniami.

Więc moje pytanie brzmi: co jest podstawową kwestią dobrych ludzi w JetBrains flagujesz dla mnie i jakie są konsekwencje tego.

Dzięki

+0

[this] (http://stackoverflow.com/a/2082895/1244816) mógłby wyjaśnić niektóre z nich - nie czytałem jednak dziury :) –

Odpowiedz

4

This JetBrains blog post ma to samo pytanie w komentarzu.

tamtejszych odpowiedź mówi tak:

Cześć! Ta wtyczka ma jeszcze jedną wewnętrzną funkcję: inspekcję kodu, aby pokazać "wolne" (> 10x wolniejsze) tworzenie instancji delegata dla JIT CL86 x86. Możesz uruchomić this test (tworzy delegatów z różnych metod - virtual/interface/generic/etc), aby zobaczyć różnicę w wydajności kreacji delegatów.

Podobnie jak przydziały kontroli - nie powinien dbać o tyle aż jakiś migawka wydajność w jakiejś gorącej ścieżce aplikacji pokazuje długie inwokacje o wewnętrzne CLR. Podobnie jak przy alokacjach - inspekcje mogą (i będą) generować fałszywe alarmy dzięki nowemu RuyJIT, na przykład.

Uwaga że linked test Podkreśla „wolno” wytwory delegacji z komentarzem strzałka: <--.

+0

Mam zainstalowany program "Heap Allocations Viewer". Zaktualizuję pytanie, podając poprawne źródło komunikatu o błędzie. To wyjaśnia, dlaczego jest oflagowane - chociaż zamierzam zmniejszyć wagę ostrzeżenia. Wszelkie wgląd w to, dlaczego pisanie w ten sposób jest '> 10x wolniejsze" niż na inne sposoby? Po prostu chcę zrozumieć tak głęboko, jak to tylko możliwe. Dzięki. –

+0

Ten test jest dość samodzielny. Spróbuj uruchomić i zobaczyć, jakie wyniki uzyskasz; wtedy możesz zdecydować, czy warto przejść na inny styl. –