powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF - Performance
22 сообщений из 22, страница 1 из 1
WPF - Performance
    #38450761
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело было вечером - делать было нечего...
Расчихлил на досуге билдер С++ 6.0 и стал гулькаться, захотелось сравнить производительность нативного UI с технологиями дотнета. В общем много чего написал и много чего нового узнал, но самый простой пример, вот такой элементарный кусочек говнокода:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
private void button1_Click(object sender, RoutedEventArgs e)
        {
            int x = 0;
            int y = 0;
            int z = 0;

            for (int i = 0; i < 1000000; i++)
            {
                x = Convert.ToInt32(textBox1.Text);
                y = Convert.ToInt32(textBox2.Text);
                z += x + y;
                textBox3.Text = z.ToString();
            }
        }


Т.е. имеем 3 текстбокса и кнопочку, как видим нихрена этот код не делает просто "террорезирует" UI.
Никаких оптимизаций и кастомных настроек, чисто новый проект в студии, фреймворк 4.0.
Вводим в первые два текстбокса по циферке, жмем кнопочку и ждем.
Что имеем?
WinForms: 40 - 45с
Silverlight: 50 - 60c
WPF... а он тупо глохнет на этой "задачке"! Если в цикле задать i < 10000 то считает 30 секунд!
Кто-нибудь может это прокоментировать? Почему "мега-технология" прямо из коробки так лажает?

Аналог на билдере С++ отрабатывает за 15-20 секунд.
Аналог на Java отрабатывает за 25-30 секунд.

Написал аналог на Silverlight с биндингами в XAML, получил провал по производительности ~30%.
Ваши коментарии...
...
Рейтинг: 0 / 0
WPF - Performance
    #38450780
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WPF не нужен.
...
Рейтинг: 0 / 0
WPF - Performance
    #38450812
Фотография Torre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ждешь МСУ?:)
По теме: WPF в первую очередь UI, графики, например, прекрасно отрабатывают (это без DirectX). WPF использует бесшовное взаимодействие с DirectX, в этом весь профит. Кроме того, ни одно UI не предназначено для вышеописанной задачи. Что касается Java и C, там UI очень тонкий слой.
...
Рейтинг: 0 / 0
WPF - Performance
    #38450859
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKI,

если сделать нормально - лажать не будет.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Task.Factory.StartNew(() =>
                                  {
                                      int x = 0;
                                      int y = 0;
                                      int z = 0;

                                      for (int i = 0; i < 1000000; i++)
                                      {
                                          x = Application.Current.Dispatcher.Invoke<int>(() => Convert.ToInt32(T1.Text));
                                          y = Application.Current.Dispatcher.Invoke<int>(() =>Convert.ToInt32(T2.Text));
                                          z += x + y;
                                          Application.Current.Dispatcher.Invoke(() => T3.Text = z.ToString());
                                      }

                                  });



Работает очень даже на ура. Вы же не будете в реальном приложении "так" вешать UI? Все пойдет в бэкграунд. Так, что тест совсем не тест :)
...
Рейтинг: 0 / 0
WPF - Performance
    #38450868
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще, типа "тест":
С постоянно дерганным UI - 117 сек.
Без дерганье UI - 40 сек.
...
Рейтинг: 0 / 0
WPF - Performance
    #38453495
Фотография Roslyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абсолют,

у меня 203 сек.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 Task.Factory.StartNew(() => {
                int z = 0, x = 0, y = 0;
                var sw = Stopwatch.StartNew(); 
                for (int i = 0; i < 1000000; i++)
                {
                    x = Application.Current.Dispatcher.Invoke<int>(()=> Convert.ToInt32(txt1.Text));
                    y = Application.Current.Dispatcher.Invoke<int>(()=>Convert.ToInt32(txt2.Text));
                    z += x + y;
                    Application.Current.Dispatcher.Invoke(() => txt3.Text = z.ToString());
                    Application.Current.Dispatcher.Invoke(() => time.Text = (sw.ElapsedMilliseconds / 1000).ToString());
                }

                sw.Stop();
            });
...
Рейтинг: 0 / 0
WPF - Performance
    #38455300
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
От машины, точнее видекарты сильно зависит. Чем мощнее карта тем быстрее впф. Я реальные тесты гонял типа скорость загрузки стилей а не такую синтетическую фигню. И мерять с помощью стопватча конечно можно но результаты не о чем.
Мерять надо время рендеринга.
...
Рейтинг: 0 / 0
WPF - Performance
    #38459853
Фотография James Bond FR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpuОт машины, точнее видекарты сильно зависит. Чем мощнее карта тем быстрее впф.
Предлагаю под эту задачу "облака" разогнать!
gpuЯ реальные тесты гонял типа скорость загрузки стилей а не такую синтетическую фигню. И мерять с помощью стопватча конечно можно но результаты не о чем.
Мерять надо время рендеринга.
Система не может с бэкграундом поле обновить, а мы скорость загрузки стилей меряем и рендеринг.
Предлагаю температуру шпинделя винчестера померять, как без нее то?
...
Рейтинг: 0 / 0
WPF - Performance
    #38459999
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpuОт машины, точнее видекарты сильно зависит. Чем мощнее карта тем быстрее впф. Я реальные тесты гонял типа скорость загрузки стилей а не такую синтетическую фигню. И мерять с помощью стопватча конечно можно но результаты не о чем.
Мерять надо время рендеринга.
интересно на тесты загрузки стилей посмотреть. Как мерили скорость рендеринга?
...
Рейтинг: 0 / 0
WPF - Performance
    #38461195
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
James Bond FRСистема не может с бэкграундом поле обновить
Не пытайтесь дискутировать о вкусе устриц с тем кто их ел.
...
Рейтинг: 0 / 0
WPF - Performance
    #38461196
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanинтересно на тесты загрузки стилей посмотреть. Как мерили скорость рендеринга?
Завтра выложу
...
Рейтинг: 0 / 0
WPF - Performance
    #38461361
Фотография James Bond FR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpuJames Bond FRСистема не может с бэкграундом поле обновить
Не пытайтесь дискутировать о вкусе устриц с тем кто их ел.
Перечитал пост три раза, но так и не понял глубину мысли, чесслово.
...
Рейтинг: 0 / 0
WPF - Performance
    #38461590
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanКак мерили скорость рендеринга?
CompositionTarget.Rendering
меряли когда евент не приходил.
netivanинтересно на тесты загрузки стилей посмотреть.

10000 обьектов в ListView

Test1 обычний пример с ListView
Test2 CellTemplate (Datatemplate) в ListView
Test3 Стиль для Button в каждой столбце ListView
Test4 ControlTemplate для Button в Style
Произведенные измерения однозначно показывают что каждое усложнение UI приводит к замедлению
...
Рейтинг: 0 / 0
WPF - Performance
    #38461600
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
James Bond FRgpuпропущено...

Не пытайтесь дискутировать о вкусе устриц с тем кто их ел.
Перечитал пост три раза, но так и не понял глубину мысли, чесслово.

Ничего страшного, просто ВПФ надо уметь готовить, как впрочем и все остальное.
...
Рейтинг: 0 / 0
WPF - Performance
    #38461625
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpuНичего страшного, просто ВПФ надо уметь готовить, как впрочем и все остальное.
Ну так у Вас есть все шансы порвать зал аплодисментами. Пока не один кашевар не приблизил результат "синтетического теста" к результатам тех же винформ.
...
Рейтинг: 0 / 0
WPF - Performance
    #38461670
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpu,

а че на немецком?:(
Код теста интереснее,чем результат. То, что замедление очевидно :)
...
Рейтинг: 0 / 0
WPF - Performance
    #38462001
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему максимальное видимые всего 46?
...
Рейтинг: 0 / 0
WPF - Performance
    #38462134
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIgpuНичего страшного, просто ВПФ надо уметь готовить, как впрочем и все остальное.
Ну так у Вас есть все шансы порвать зал аплодисментами. Пока не один кашевар не приблизил результат "синтетического теста" к результатам тех же винформ.
Делать мне больше нечего.
винформ не поддерживает ДиректХ. ВПФ поддерживает. Сделай сложную форму с кучей анимацией и кучей елементов на винформ и ВПФ. Результат будет другой.
Собственно мне паралельно что там на винформах происходит,заслуживающие доверия сравнениния одного с другим можно найти в инете.
Только надо внимательно на имена авторов смотреть, ибо немногие способны отделить теплое от мягкого.
...
Рейтинг: 0 / 0
WPF - Performance
    #38462142
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АбсолютА почему максимальное видимые всего 46?
Имеено столько присутствует как махимум для конкретной формы которую препарировали для тестов
...
Рейтинг: 0 / 0
WPF - Performance
    #38462172
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivangpu,
а че на немецком?:(

Бывший МС Regional Director по Германии делал.

netivanКод теста интереснее,чем результат. То, что замедление очевидно :)
Не могу, коммерческая тайна и стоило все исследование несколько десяток тысяч евров.

Но информация к размышлению
лаптоп1 : DELL Notebook Precision M4500, i7, Nvidia Quadro FX 880
лаптоп2 : DELL Notebook Precision M6500, i7 (2.5…3.6 GHz), 16 GB RAM, SSD, Nvidia Quadro 5010M

время рендеринга
ТестАпп со стилями лаптоп1: 186 ms
ТестАпп без стилей лаптоп1: 34 ms

ТестАпп со стилями лаптоп2: 63 ms
ТестАпп без стилей лаптоп2: мах. 32 ms
...
Рейтинг: 0 / 0
WPF - Performance
    #38462209
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpu,

ясно, эх было бы интересно.
НО справедливости ради 32 и 183 мс вряд ли заметит пользователь приложения...
...
Рейтинг: 0 / 0
WPF - Performance
    #38462361
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivangpu,

ясно, эх было бы интересно.
НО справедливости ради 32 и 183 мс вряд ли заметит пользователь приложения...
а теперь добавим реальные данные, реальные стили и речь пойдет о секундах.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF - Performance
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]