2011-09-05 13 views
8

Ho un'applicazione WinForm C# (.NET 4.0) che comunica continuamente con un'applicazione basata su Linux, riceve alcuni dati da esso alcune volte al secondo. Ho messo a punto questa applicazione WinForm per ridurre il suo elevato utilizzo della CPU quando ho visto 'clr.sll! StrongNameSignatureVerification' sta consumando un sacco di CPU per questa applicazione. Ho usato Process Explorer per scoprirlo. Alcune ricerche su Google mi hanno detto che "clr.sll! StrongNameSignatureVerification" sta dando il via perché CLR sta provando a verificare se si tratta di un assembly con un nome molto forte (che non voglio che CLR).clr.sll! StrongNameSignatureVerification Consumo CPU

Dopo le mie ulteriori ricerche su questo, ho provato sn.exe da Microsoft SDK per saltare la verifica della firma per questa applicazione WinForm. Ho ricevuto un errore dicendo che questo non è un assembly con un nome forte. Non mi ha sorpreso dato che non ho firmato questa applicazione o non ricordo di aver impostato qualcosa che dovrebbe invocare CLR per verificare la firma di questa applicazione.

La mia esperienza nella sicurezza delle applicazioni .net è quasi zero, quindi al momento cerco aiuto su questo argomento. Qualsiasi puntatore sarà utile.

Grazie in anticipo.

+0

Che cosa hai utilizzato per profilare la tua applicazione? – Iridium

+0

ANTS Profiler da RedGate – silverspoon

+1

Penso che avrete bisogno di aggiungere ulteriori dettagli - ad es. una pila di chiamate completa che mostra da dove viene chiamata questa funzione StrongNameSignatureVerification. Inoltre, quante volte viene chiamata la funzione? Ovviamente se è necessario dire, 2 secondi per chiamare questo metodo, ma succede solo una volta, può apparire come un hotspot nel tuo profilo, ma nel lungo periodo non influenzerà significativamente le prestazioni. (Naturalmente, se viene chiamato centinaia di volte al secondo, questa è un'altra questione). – Iridium

risposta

2

Guardate l'offset dopo clr.sll! StrongNameSignatureVerification, se è più grande di qualche migliaio di byte, probabilmente significa che i simboli non vengono caricati in Process Explorer e il problema potrebbe essere in qualsiasi altro metodo in CLR. dll.

Problemi correlati