2014-10-15 9 views
7

Ho aggiornato ReSharper e ho visto un errore che non ero presente in precedenza. Ho controllato, ma non ho trovato nulla sull'errore o sul problema sottostante segnalato.Creazione delegato lento

** Modifica **: come indicato di seguito, è in realtà il plug-in "Heap Allocation Viewer", non ReSharper stesso che lo contrassegna come un errore, sebbene ciò non modifichi la domanda stessa.

creazione delegato lento: dall'interfaccia 'IPluginHandler' metodo

questo si verifica durante la sottoscrizione di un gestore plugin per eventi su un aggregatore evento.

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

nel codice qui sopra, Executing è un evento e subscriber.OnExecuting è un gestore di eventi appropriata per l'evento.

Per essere chiari, si tratta di un "errore software" di ReSharper poiché il codice verrà comunque creato ed eseguito come previsto.

Quindi la mia domanda è qual è il problema di fondo che le brave persone di JetBrains stanno segnalando per me e quali sono le ramificazioni di esso.

Grazie

+0

[questo] (http://stackoverflow.com/a/2082895/1244816) potrebbe spiegare un po 'di esso - non ho letto la cosa del foro però :) –

risposta

4

This JetBrains blog post ha la stessa domanda in un commento.

La risposta ci dice questo:

Hi! Questo plugin ha anche un'altra caratteristica interna: ispezione del codice per mostrare creazioni di istanze delegate "lente" (> 10x più lente) per JR CLR x86. È possibile eseguire this test (crea delegati di vari tipi di metodi: virtuale/interfaccia/generico/ecc.) Per vedere la differenza nelle prestazioni di creazione dei delegati.

Proprio come nel caso dell'ispezione delle allocazioni, non ci si dovrebbe preoccupare molto di questo fino a quando alcune istantanee delle prestazioni in qualche percorso caldo dell'applicazione mostrano lunghe invocazioni di interni CLR. E proprio come con le allocazioni - queste ispezioni possono (e lo faranno) produrre falsi positivi con il nuovo RuyJIT, per esempio.

Nota che i linked test mette in evidenza le "lenti" creazioni delegazione con un commento freccia: <--.

+0

Ho installato il 'Heap Allocations Viewer'. Aggiornerò la domanda con la fonte corretta del messaggio di errore. Questo spiega perché è contrassegnato - anche se ho intenzione di ridurre la gravità a un avviso. Qualche idea sul perché scrivere in questo modo è '> 10 volte più lento? Di altri modi? Voglio solo capire il più profondamente possibile. Grazie. –

+0

Questo test è piuttosto autonomo. Prova a eseguirlo e vedere quali risultati ottieni; quindi puoi decidere se vale la pena passare a uno stile diverso. –