2011-09-05 9 views
8

Mam aplikację WinForm C# (.NET 4.0), która w sposób ciągły komunikuje się z aplikacją opartą na systemie Linux, odbiera niektóre dane z niej kilka razy na sekundę. Dokładnie dostosowałem tę aplikację WinForm, aby zmniejszyć jej wysokie użycie procesora, gdy zobaczyłem "clr.sll! StrongNameSignatureVerification" zużywa dużo mocy procesora dla tej aplikacji. Użyłem Process Explorer, aby to znaleźć. Niektóre wyszukiwania Google powiedziały mi, że "clr.sll! StrongNameSignatureVerification" jest uruchamiane, ponieważ CLR próbuje sprawdzić, czy jest to silnie nazwany zestaw (którego nie chcę, aby CLR).clr.sll! StrongNameSignatureVerification Zużycie procesora

Po przeprowadzeniu dalszych badań, spróbowałem uzyskać sn.exe z Microsoft SDK, aby pominąć weryfikację podpisu dla tej aplikacji WinForm. Otrzymałem komunikat o błędzie, że nie jest to zespół o dużej nazwie. Nie byłem zaskoczony, ponieważ nie podpisałem tej aplikacji lub nie pamiętam ustawienia niczego, co powinno wywoływać CLR w celu zweryfikowania podpisu tej aplikacji.

Moje doświadczenie w zakresie bezpieczeństwa aplikacji .net jest prawie zerowe, więc w chwili obecnej szukam pomocy w tej sprawie. Pomocny będzie dowolny wskaźnik.

Z góry dziękuję.

+0

Czego używasz do profilowania aplikacji? – Iridium

+0

ANTS Profiler z RedGate – silverspoon

+1

Myślę, że będziesz potrzebować dodać więcej szczegółów - np. pełny stos wywołający, z którego wywoływana jest funkcja StrongNameSignatureVerification. Ile razy wywoływana jest funkcja? Oczywiście, jeśli bierzesz 2 sekundy na wywołanie tej metody, ale dzieje się to tylko raz, może to być hotspot w profilu, ale w dłuższej perspektywie nie wpłynie znacząco na wydajność. (Oczywiście, jeśli nazywa się to setki razy na sekundę, to już inna sprawa). – Iridium

Odpowiedz

2

Spójrz na przesunięcie po clr.sll StrongNameSignatureVerification!, jeśli jest większy niż kilka tysięcy bajtów, to prawdopodobnie oznacza, że ​​symbole nie są ładowane w Process Explorer i problem może być w jakikolwiek inny sposób w CLR. dll.

Powiązane problemy