Попытка улучшить производительность при запуске приложения WPF - PullRequest
1 голос
/ 25 марта 2019

Обновление

Я обновил образец кода, запущенного при запуске приложения, и загрузил новое изображение результатов профиля производительности.Я не понимаю причину, по которой нет активности в 1-ю секунду.Это, кажется, самая значительная задержка, и я хочу понять, если это что-то делает с платформой WPF или dot net?

End Update

В графике использования потоков пользовательского интерфейса Iможно увидеть перед диском IO (синяя линия), опять же в основном пустой + код приложения (зеленый).Как я могу узнать, что происходит в пустой области.

Другая вещь, которую я видел, это то, что XAML анализируется во время загрузки приложения (синяя область).XAML присутствует в другом проекте и на него ссылаются здесь.Мне было интересно, есть ли какой-нибудь способ предварительного разбора xaml, поскольку он находится в другом проекте.

Я понимаю, что вопрос слишком широкий, но есть предложения о том, как действовать, или указатели на правильный инструмент(желательно бесплатно) будет ценным.

enter image description here

My App.XAML содержит только:

    protected override void OnStartup(StartupEventArgs e)
    {
        new Entry().Show();
        base.OnStartup(e);
    }

И XAML для входа составляет

<telerik:RadWindow x:Class="Some.Namespace.Entry"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
        xmlns:local="clr-namespace:Some.Namespace"
        mc:Ignorable="d"
        Header ="Header" Width="1700" Height="900"
        telerik:StyleManager.Theme="Windows8" WindowStartupLocation="CenterOwner">

</telerik:RadWindow>

Код для этого:

public Entry()
        {
            RadWindowInteropHelper.SetAllowTransparency(this, false);
            InitializeComponent();
        }

ОБНОВЛЕНИЕ TcpView не выявил сетевой трафик (я этого не ожидал).Выключение вредоносных программ может быть невозможным.Я попытался получить еще один отчет с помощью профилировщика Jet Brains, это показывает, что на проверку доступа тратится почти секунда времени, насколько это разумно, пытался найти больше в Интернете, но не получил никаких результатов.

enter image description here

1 Ответ

0 голосов
/ 25 марта 2019

Вы запускаете приложение в режиме выпуска?Это само по себе может улучшить время запуска.

Грубая вещь, которую я делал в прошлом, - запуск приложения с отладкой и постоянное нажатие на перерыв в Visual Studio.Если отладчик всегда останавливается в одном и том же месте, это проблемная область.Надеюсь, это в вашем собственном коде, поэтому вы можете изменить его.

Если у вас есть доступ к профилировщику, который обрабатывает ваш код, попробуйте использовать его.Visual Studio поставляется с одним, но вы можете использовать его только с определенными лицензиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...