Moja aplikacja WPF ma funkcję, dzięki której renderuje dużą liczbę obrazów w tle podczas aktualizowania interfejsu użytkownika, gdy nowy obraz jest gotowy.Application.Run jest funkcją pochłaniającą najwięcej procesora w mojej aplikacji; co mogę zoptymalizować?
Profilowanie tego procesu pokazało, że Application.Run
to funkcja, która wykonuje najwięcej pracy, na poziomie 43%, z "drugim najdroższym" spotem współużytkowanym przez trzy interfejsy graficzne API, z których każdy ma 6%.
Co mógłbym zrobić, aby spędzić tak dużo czasu w Application.Run
? Wydaje się, że sednem tej metody jest uruchomienie głównego programu rozsyłającego dla mojej aplikacji, ale to nie pomaga mi zorientować się, co robi dyspozytor tak bardzo. Czy mogę uzyskać bardziej szczegółowy profil? Uwaga: Mam na myśli System.Windows.Application.Run
.
W prawo. Pomyślcie o programie jako cyrkowiec, który wściekle pedałuje, żeby zrównoważyć wysoki stos akrobatów, z których każdy mówi mu, którą drogą iść. On nie jest problemem, problem jest wyższy. Możesz uzyskać te same informacje za pomocą kilku * [stackshots] (http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux/378024# 378024) * wątków i powie Ci dokładnie, które linie kodu były sprawcami. –