Рассчитано это все дело на .Nen Framework 2.0 (бэта 2 и выше).
Большая просьба протестировать это дело на своих комьпьютерах.
Для этого нужно запустить тест, раза 2-4 выполнить "Test All" и запостить результаты теста (которые при этом помещаются в клипборд) в ответ на это сообщение. При этом результаты нужно снабдить описанием своего компьюетра. Информация о компьютере нужна следующая:
1. Тип видеокарты.
2. Драйвер. Его производитель (в основно интересно дова из поставки виндвс или качанные с сайта производителя) и версия.
3. Процессор (тип, частота, объем кэша).
4. Версия Виндовс.
5. Версия сервиспака для виндовс.
Особенно интересуют результаты тестов на слабых машинах. Оптимально если будут разные извращения вроде встроенной в материнку графики и т.п.
Если затрудняетсь с определением типа железа, но хочется помочь, можно скачать SiSoft Sandra Lite — отличную утилиту позволяющую определить конфигуркцию и потестировать компьютер.
Собственно что это за тесты.
GDI с двойной буферизацией
GDI (без буферизации)
GDI+ с двойной буферизацией
GDI+ (без буферизации)
При этом GDI-тест вылизан до безобразия, да и в GDI+-тесте не делается почти ничего лишнего. В общем, частое измерение производительности подсистем отрисовки текста.
На моей машине результаты этого теста такие:
Разрешение: {Width=1152, Height=864}
0.0199 (GDI с двойной буферизацией)
0.0093 (GDI)
0.0300 (GDI+ с двойной буферизацией)
0.0221 (GDI+)
VD>1. Тип видеокарты.
ATI mobility Rageon 9600/9700
VD>2. Драйвер. Его производитель (в основно интересно дова из поставки виндвс или качанные с сайта производителя) и версия.
ATI
VD>3. Процессор (тип, частота, объем кэша).
P4M 1800, 2MG кеш
VD>4. Версия Виндовс.
2003 без SP
Разрешение: {Width=1280, Height=768}
0.0560 (GDI с двойной буферизацией)
0.0085 (GDI)
0.0629 (GDI+ с двойной буферизацией)
0.0201 (GDI+)
0,0431 (GDI с двойной буферизацией)
0,0130 (GDI)
0,0807 (GDI+ с двойной буферизацией)
0,0631 (GDI+)
VD>1. Тип видеокарты. VD>2. Драйвер. Его производитель (в основно интересно дова из поставки виндвс или качанные с сайта производителя) и версия. VD>3. Процессор (тип, частота, объем кэша). VD>4. Версия Виндовс. VD>5. Версия сервиспака для виндовс.
Видеосистема
Адаптер : SAPPHIRE RADEON 9000 ATLANTIS PRO
Драйвера скачаны с сайта ATI. Файл: 5-8_xp-2k_dd_ccc_wdm_enu_25203.exe
Процессор
Модель : AMD Athlon(tm) XP 1800+
Скорость : 1.54GHz
Номер модели : 1800 (примерно)
Рейтинг производительности : PR2233 (примерно)
Тип : Стандартный
Встроенный кэш L2 : 256kB ECC Синхронный, Обратная запись, 16-магистральный набор, длина строки 64 байт
Материнская плата
Шины : ISA AGP PCI IMB USB i2c/SMBus
Поддержка MP : 1 процессор(ов)
MP APIC : Да
Системный BIOS : Award Software International, Inc. F5
Система : GA-7VAX
Материнская плата : Gigabyte Technology Co., Ltd. GA-7VAX
Всего памяти : 768MB DDR-SDRAM
Чипсет 1
Модель : Giga-Byte Technology VT8377 Apollo KT400/A/600 CPU to PCI Bridge
Скорость системной шины : 2x 134MHz (268MHz скорость передачи данных)
Всего памяти : 768MB DDR-SDRAM
Скорость шины памяти : 2x 167MHz (334MHz скорость передачи данных)
Операционная система
Система Windows : Microsoft Windows 2003 Advanced/Enterprise Server (Win32 x86) 5.02.3790 (Service Pack 1)
Разрешение: {Width=1024, Height=768}
0,1482 (GDI с двойной буферизацией)
0,0827 (GDI)
0,1796 (GDI+ с двойной буферизацией)
0,3535 (GDI+)
Разрешение: {Width=1024, Height=768}
0,1312 (GDI с двойной буферизацией)
0,0816 (GDI)
0,1768 (GDI+ с двойной буферизацией)
0,3554 (GDI+)
Операционная система Microsoft Windows Server 2003, Standard Edition
Пакет обновления ОС Service Pack 1
Internet Explorer 6.0.3790.1830
DirectX 4.09.00.0904 (DirectX 9.0c)
Тип ЦП Intel Celeron II, 667 MHz (10 x 67)
Системная плата Gigabyte GA-6WMMC7 (3 PCI, 1 AMR, 2 DIMM, Audio, Video)
Чипсет системной платы Intel Whitney i810
Системная память 384 Мб (SDRAM)
Тип BIOS Award Modular (10/22/01)
На другой машине — завалилась:
************** Exception Text **************
System.Runtime.InteropServices.ExternalException: Requested Clipboard operation did not succeed.
at System.Windows.Forms.Clipboard.ThrowIfFailed(Int32 hr)
at System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy, Int32 retryTimes, Int32 retryDelay)
at System.Windows.Forms.Clipboard.SetText(String text, TextDataFormat format)
at System.Windows.Forms.Clipboard.SetText(String text)
at FontStyleTest.Form1._testAll_Click(Object sender, EventArgs e) in E:\MyProjects\Tests\FontStyleTest\FontStyleTest\Form1.cs:line 250
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50215.44 (beta2.050215-4400)
CodeBase: file:///D:/WINDOWS/Microsoft.NET/Framework/v2.0.50215/mscorlib.dll
----------------------------------------
FontStyleTest
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///W:/privates/kostya/My%20Tests/FontStyleTest.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50215.44 (beta2.050215-4400)
CodeBase: file:///D:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50215.44 (beta2.050215-4400)
CodeBase: file:///D:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50215.44 (beta2.050215-4400)
CodeBase: file:///D:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Ага! Вот эта конфигурация особо интересна.
А можно попросить тебя вручную включить каждый из режимов и поизменять размеры окна (приближаясь к максимальным и уменьшая их) и описать тактильные ощущения (ну, подтормаживает... нет...)?
Особенно интересуют режимы с двойной буферизацией.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Разрешение: {Width=1400, Height=1050}
G>0.1018 (GDI с двойной буферизацией)
G>0.0817 (GDI)
G>0.0949 (GDI+ с двойной буферизацией)
G>0.4938 (GDI+)
G>
G>Машина: G>Процессор: Mobile Intel Pentium 4 — 3.2 GHz / 1024 Kb G>Видеокарта: SXGA+/ATI 9100 G>Windows XP Service Pack 2
Я правильно понимаю, что при использовании режима (GDI+) если поизменять размеры окна, то ощущаются не хилые тормоза? И какие ощущения от режима (GDI с двойной буферизацией)?
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, wraithik, Вы писали:
W>а это без: W>Разрешение: {Width=1280, Height=1024} W>0,1809 (GDI с двойной буферизацией) W>0,0531 (GDI) W>0,2893 (GDI+ с двойной буферизацией) W>0,2150 (GDI+)
Большая просьба попробовать поизменять размеры окна в каждом из режимов и описать ощущения. Как я понимаю, режимы с GDI+ должны нехило тормозить. Но одно дело предположения, а другое ощущения.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Результаты:
Разрешение: {Width=1280, Height=1024}
0,0585 (GDI с двойной буферизацией)
0,0377 (GDI)
0,0663 (GDI+ с двойной буферизацией)
0,0466 (GDI+)
Компьютер:
Тип ЦП Intel Pentium 4, 2800 MHz (14 x 200)
Кэш L2 512 Кб (On-Die, ECC, ATC, Full-Speed)
Системная плата Asus P4S800D
Чипсет системной платы SiS 655FX
Видеоадаптер Asus V9950SE NVIDIA GeForce FX 5900 (128 Мб)
Установленные драйверы nv4_disp (6.14.10.7189 — nVIDIA ForceWare 71.89)
Операционная система Microsoft Windows 2000 Professional Service Pack 4
DirectX 4.09.00.0904 (DirectX 9.0c)
PS Вероятно нужно также указывать и версию DirectX. Кстати у меня результаты усредняются только после 8 — 10 запуска. Разброс результатов до 20 %. Но в конце концов сходятся к этим при разных запусках.
... <<My edition based on RSDN@Home 1.2.0 alpha rev. 618>>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, wraithik, Вы писали:
W>>а это без: W>>Разрешение: {Width=1280, Height=1024} W>>0,1809 (GDI с двойной буферизацией) W>>0,0531 (GDI) W>>0,2893 (GDI+ с двойной буферизацией) W>>0,2150 (GDI+)
VD>Большая просьба попробовать поизменять размеры окна в каждом из режимов и описать ощущения. Как я понимаю, режимы с GDI+ должны нехило тормозить. Но одно дело предположения, а другое ощущения.
WinAMP (загрузка ЦП колеблется от 1 до 5%)
Разрешение: {Width=1024, Height=768}
0,1048 (GDI с двойной буферизацией)
0,0385 (GDI)
0,1781 (GDI+ с двойной буферизацией)
0,1509 (GDI+)
Разрешение: {Width=1152, Height=864}
0,1486 (GDI с двойной буферизацией)
0,0425 (GDI)
0,2262 (GDI+ с двойной буферизацией)
0,1854 (GDI+)
Разрешение: {Width=800, Height=600} (на мониторе даже квадратики видны как-то убого)
0,0769 (GDI с двойной буферизацией)
0,0240 (GDI)
0,1074 (GDI+ с двойной буферизацией)
0,0931 (GDI+)
Без WinAMP
Разрешение: {Width=800, Height=600}
0,0586 (GDI с двойной буферизацией)
0,0185 (GDI)
0,0905 (GDI+ с двойной буферизацией)
0,0761 (GDI+)
Разрешение: {Width=800, Height=600} — проверка на вшивость — второй запуск
0,0664 (GDI с двойной буферизацией)
0,0244 (GDI)
0,0988 (GDI+ с двойной буферизацией)
0,0757 (GDI+)
Разрешение: {Width=800, Height=600}
0,0616 (GDI с двойной буферизацией)
0,0184 (GDI)
0,0921 (GDI+ с двойной буферизацией)
0,0739 (GDI+)
------------------------------------------------------
Разрешение: {Width=1024, Height=768}
0,1028 (GDI с двойной буферизацией)
0,0370 (GDI)
0,1478 (GDI+ с двойной буферизацией)
0,1244 (GDI+)
Разрешение: {Width=1024, Height=768}
0,1001 (GDI с двойной буферизацией)
0,0319 (GDI)
0,1698 (GDI+ с двойной буферизацией)
0,1212 (GDI+)
Разрешение: {Width=1024, Height=768}
0,1050 (GDI с двойной буферизацией)
0,0338 (GDI)
0,1530 (GDI+ с двойной буферизацией)
0,1233 (GDI+)
------------------------------------------
Разрешение: {Width=1152, Height=864}
0,1331 (GDI с двойной буферизацией)
0,0451 (GDI)
0,1941 (GDI+ с двойной буферизацией)
0,1561 (GDI+)
Разрешение: {Width=1152, Height=864}
0,1342 (GDI с двойной буферизацией)
0,0411 (GDI)
0,1929 (GDI+ с двойной буферизацией)
0,1590 (GDI+)
Разрешение: {Width=1152, Height=864}
0,1303 (GDI с двойной буферизацией)
0,0400 (GDI)
0,1984 (GDI+ с двойной буферизацией)
0,1646 (GDI+)
--------------------------------------
Разрешение: {Width=1280, Height=1024}
0,1657 (GDI с двойной буферизацией)
0,0541 (GDI)
0,2743 (GDI+ с двойной буферизацией)
0,2451 (GDI+)
Разрешение: {Width=1280, Height=1024}
0,1633 (GDI с двойной буферизацией)
0,0561 (GDI)
0,2762 (GDI+ с двойной буферизацией)
0,2282 (GDI+)
Разрешение: {Width=1280, Height=1024}
0,1686 (GDI с двойной буферизацией)
0,0515 (GDI)
0,2715 (GDI+ с двойной буферизацией)
0,2183 (GDI+)
---------------------------------------
Теперь я снял галочку апаратное ускорение (в свойствах дисплея, кнопка "Дополнительно", закладка "Диагностика")
Разрешение: {Width=1280, Height=1024}
0,2373 (GDI с двойной буферизацией)
0,2770 (GDI)
0,3257 (GDI+ с двойной буферизацией)
0,4132 (GDI+)
Разрешение: {Width=1280, Height=1024}
0,2560 (GDI с двойной буферизацией)
0,2855 (GDI)
0,3160 (GDI+ с двойной буферизацией)
0,3883 (GDI+)
Разрешение: {Width=1280, Height=1024}
0,2370 (GDI с двойной буферизацией)
0,2873 (GDI)
0,3258 (GDI+ с двойной буферизацией)
0,3910 (GDI+)
VD>При этом GDI-тест вылизан до безобразия, да и в GDI+-тесте не делается почти ничего лишнего. В общем, частое измерение производительности подсистем отрисовки текста.
Стоило-бы добавить SuppressUnmanagedCodeSecurity к импортируемым WinAPI функциям. Обеспечить корректность передаваемых параметров не так сложно. А лишний security check совершенно никчему.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.