ТЕСТИРОВАНИЕ КОМПЬЮТЕРОВ
(c) Гаузер Э.Г., Баку, 21.09.24
website: www.erichware.com
Когда я несколько лет назад написал еще первую версию своей программы "TestPC", я никак не планировал писать подобную статью. Я просто хотел протестировать скорость своего ПК в разных режимах и в разных сочетаниях с другими запущенными программами.
Но сейчас, исходя из довольно большого уже опыта подобных тестирований, я решил обобщить полученные результаты и хоть как-то их осмыслить. Не знаю, имеют ли мои "научные изыскания" какой-то практический смысл, или это труд по типу "британских ученых", но поскольку мне самому было любопытно заниматься этим вопросом, то о потраченном времени я не жалею. А результаты всегда стоит публиковать, потому что никогда не знаешь, кому что понадобится...
Полученные результаты представлены в таблице, но для ее понимания нужны некоторые пояснения и комментарии. И надо учесть, что программа тестирования по сути выполняет множество циклических вычислений чисто математического характера, без активного использования оперативной или дисковой памяти.
Некоторые из протестированных компьютеров имеют еще и графические процессоры (GPU), показывая его нагрузку тоже. В то же время, относительно старые устройства (или со старыми ОС) подобной информации не отображают, или вовсе таких блоков не имеют. Зато старые "таск-менеджеры" отображали не только нагрузку процессора, но и т.н. "время ядра", что тоже несет часть полезной информации о работе компьютера (на новых график ядро отображает, но чисел конкретных нет).
Надо заметить, что все тестируемые тут компьютеры содержали более одного логического процессора, хотя количество ядер (вопреки расхожему мнению) - это иное понятие. И в ходе выполнения тестов нагрузки этих процессоров были отнюдь не равномерными. Но почти не было так, что один процессор работал, а другой (другие) нет. К сожалению, влиять на этот процесс невозможно, а соответственно, невозможно проверить прямую эффективность работы многоядерного процессора.
Тем не менее, в таблице приводится величина "А", которая грубо отражает активность отдельных логических процессоров. Если эта величина не указана, значит, все ядра работают одинаково или график слишком хаотичный. Но иногда работало четко одно(два) ядра! Интересно...
Надо также понимать, что все приведенные значения приблизительны, потому что в разных опытах все они могут отличаться в зависимости от работы других приложений (в отличие от ДОС, Виндовс сама запускает процессы и они влияют друг на друга). Отличия не сильно велики, но скорость 343 и 352 (например) - это в пределах погрешности.
Я тестировал одну и ту же (алгоритмически) программу, написанную на разных платформах. Что это за платформы?
1. TestpcNT - программа написана как обычный "winform" для платформы Microsoft.NET, 32-битная версия.
2. Testpc32 - программа написана на старой версии языка, формально для Вин98 (но скомпилирована в нативный код), 32-битная версия.
3. TestpcWPF - программа написана по технологии "WPF", тоже для платформы Microsoft.NET, 32-битная версия.
4. Consol - программа в виде консольного приложения, тоже для платформы Microsoft.NET, 32-битная версия.
5. Testpc16 - программа написана для старой Вин3.1, 16-битная версия.
6. Testpc08 - программа написана для среды MS-DOS, хотя имеет такой же внешний вид, как и "подоконные" версии. Кстати, и логика там та же самая: ООП.
Так вот, хотя досовская версия работала не на всех компьютерах (64-битные машины ДОС не поддерживают), ее результаты интереснее всего. Но об этом ниже.
А пока хочу пояснить условные обозначения в таблице:
R - структура процессора (сокеты/ядра/логические)
L - кэш процессора (L1/L2/L3 или конкретно)
P - нагрузка процессора
Y - время ядра (для старых)
G - нагрузка графического сопроцессора (если есть)
A - количество нагруженных логических процессоров (работают/всего)
S - значение скорости работы программы
T - нагрузка в ходе ожидания (P/Y)
W - нагрузка при выполнении (P/Y/S)
M - нагрузка при движении мышкой (P/Y/S)
Буквами "NB" обозначены портативные устройства: ноутбуки, нетбуки, ультрабуки и т.д. Все остальные компьютеры - десктопы.
Что означает строка "Вывод"? Дело в том, что каждая версия (кроме досовской) имеет две опции: выводить промежуточные данные (процент, скорость, время), или не выводить. Как видно из таблицы, эти опции имеют огромное значение...
Компьютер | TestpcNT | Testpc32 | TestpcWPF | Consol | Testpc16 | Testpc08 | |||||
---|---|---|---|---|---|---|---|---|---|---|---|
Вывод: | нет | есть | нет | есть | нет | есть | нет | есть | нет | есть | есть |
Acer eM350 (NB) Intel Atom-N450; R=1/1/2; 1.66 GHz; GMA 3150 256M; DDR2 400MHz; Win7start; 32bit; |
P=52% Y=0% S=16155 | P=55% Y=25% S=71 A=1/2 |
P=55% Y=7% S=10388 A=1/2 | P=50% Y=40% S=161 A=1/2 |
P=50% Y=10% S=270 | P=90% Y=20% S=21 A=2/2 |
P=50% Y=25% S=1413 | P=50% Y=40% S=190 |
P=55% Y=20% S=4667 A=1/2 | P=50% Y=30% S=45 A=1/2 |
T=54%/5% W=3/0/56 M=50/6/1251 |
HP Core 2Quad Intel Q8300; R=1/4/4; 2.5/1.333 GHz; L=4M; G45/G43 Express; 1.2Гб; DirectX 10; Win7max SP1; 32bit; |
P=25% Y=0% S=88808 | P=25% Y=10% S=329 A=2/4 |
P=24% Y=0% S=60454 A=1/4 | P=25% Y=20% S=661 A=1/4 |
P=25% Y=5% S=1076 A=1/4 | P=50% Y=7% S=140 A=2/4 |
P=20% Y=10% S=1500 | P=20% Y=15% S=330 A=2/4 |
P=25% Y=5% S=22875 | P=25% Y=15% S=166 A=2/4 |
T=25%/0% W=0/0/56 M=24/0/8013 |
HP Core 2Duo Intel E8300; R=1/2/2; 2.83 GHz; L1=128K L2=6144K; G33/G31 Express; DirectX 9; DDR2 400MHz; WinXPpro SP3; 32bit; |
P=50% Y=0% S=114349 | P=50% Y=25% S=440 |
P=50% Y=10% S=69815 | P=50% Y=40% S=1478 A=1/2 |
P=50% Y=5% S=1307 | P=90% Y=30% S=87 |
P=26% Y=10% S=11491 | P=40% Y=30% S=1917 |
P=50% Y=5% S=29513 | P=50% Y=25% S=506 |
T=50%/0% W=0/0/96 M=45/0/9495 |
Станция Dell T7400 Xeon X5450; R=1/4/4; 3.0 GHz; L2=12M; Quadro NVS290; DirectX 10; Win7max SP1; 64bit; |
P=24% Y=0% S=94838 A=2/4 | P=24% Y=6% S=457 A=2/4 |
P=24% Y=0% S=55626 | P=25% Y=15% S=699 A=2/4 |
P=24% Y=0% S=1270 A=4/4 | P=50% Y=10% S=197 A=3/4 |
P=25% Y=15% S=2007 | P=25% Y=15% S=316 A=2/4 |
Нет | Нет | Нет |
HP 280G1 Intel i3-4160; R=1/2/4; 3.6 GHz; L=128K/512K/3M; HDG 4400; Win8.1; 64bit; |
P=25% S=176892 | P=26% S=608 |
P=25% S=106732 | P=29% S=1474 |
P=25% S=1911 | P=43% S=145 |
P=20% S=8264 | P=30% S=1476 |
Нет | Нет | Нет |
Acer Veriton Intel i3-8100; R=1/4/4; 3.6 GHz; L=256K/1M/6M; GPU=UHD630; DirectX 10; DDR4 2666MHz; Win10pro; 64bit; |
P=28% G=1% S=73014 | P=30% G=6% S=314 |
P=28% G=1% S=39855 | P=30% G=16% S=509 |
P=28% G=1% S=1447 | P=50% G=75% S=145 |
P=35% G=1% S=3108 | P=36% G=4% S=837 |
Нет | Нет | Нет |
Pavilion dv7 (NB) Intel i7-2670QM; R=1/4/8; 2.2 GHz; L=256K/1M/6M; GPU=? DDR3 1067MHz; Win10; 64bit; |
P=13% S=58676 A=4/8 | P=13% S=168 A=4/8 |
P=13% S=24075 A=4/8 | P=13% S=251 A=4/8 |
P=13% S=1305 | P=25% S=115 A=2/8 |
P=15% S=2196 A=4/8 | P=15% S=547 A=4/8 |
Нет | Нет | Нет |
Acer TMB118 (NB) Celeron N4120 R=1/4/4; 1.1(2.6)GHz; L1=224K; L2=4M; GPU=UHD600; DirectX 12; DDR4 2400MHz; Win10proEDU; 64bit; |
P=61% G=0% S=50880 | P=66% G=6% S=194 A=3/4 |
P=61% G=0% S=33973 | P=68% G=15% S=343 |
P=61% G=0% S=732 | P=100% G=75% S=110 |
P=65% G=0% S=1844 A=2/4 | P=68% G=5% S=679 A=2/4 |
Нет | Нет | Нет |
Acer Aspire 3 (NB) Celeron N4020 R=1/2/2; 1.1(2.8)GHz; L1=112K; L2=4M; GPU=UHD600; DirectX 12; DDR4 2400MHz; Win10Home; 64bit; |
P=100% G=0% S=101044 A=2/2 | P=100% G=6% S=228 A=2/2 |
P=100% G=0% S=37000 A=2/2 | P=100% G=16% S=352 A=2/2 |
P=100% G=0% S=1600 A=2/2 | P=100% G=70% S=126 A=2/2 |
P=100% G=0% S=3002 A=2/2 | P=100% G=4% S=713 A=2/2 |
Нет | Нет | Нет |
Результаты тестирования достаточно сложно оценивать, хотя по идее скорость работы такой программы должна явно зависеть от частоты процессора в режиме "без вывода", а "с выводом" должна иметь корреляцию с графическими параметрами компьютера. Правда, эти параметры известны не для всех тестируемых моделей (и не на всех отображаются), но тем не менее.
Однако наблюдается довольно странная картина. Во-первых, вроде бы самая современная из проверяемых технология "WPF" работает крайне медленно! Причем и с выводом, и без него. Причем в отсутствие вывода отличие от других версий становится непомерно большим. Во-вторых, само по себе видно, что вывод информации обрабатывается намного медленнее, чем идут расчеты. Во много раз! А значит, при выполнении каких-то сложных расчетов вывод информации должен быть минимальным для ускорения работы программы. В-третьих, в случае с наличием вывода старая версия "Test32" работает откровенно быстрее прочих вариантов (за исключением консольного иногда). А в-четвертых, самыми быстрыми оказались "HP Core2Duo" и "HP 280G1". И селерон работает быстрее, чем "i7"... В общем, куча неожиданного для меня...
Но самая интересная картина наблюдается для досовской версии. К сожалению, она не работает на 64-битных компьютерах, а их проверено больше. Тем не менее, эффект сохраняется на всех изученных компьютерах и системах. В чем он заключается, по данным таблицы?
Во-первых, после запуска и создания консольного окна, написанная на основе ООП программа существенно грузит процессор! Но как только она запущена на выполнение, нагрузка ядер падает до нуля! Да, программа работает крайне медленно, это видно по результатам. Но почему ноль загрузки?
Во-вторых, такая картина наблюдается если просто ждать перед экраном или работать с другими приложениями. Но если просто двигать мышкой ПО ОКНУ программы, то скорость ее работы возрастает на порядки! При этом, естественно, возрастает и нагрузка на процессор. Почему? Можно предположить, что движение мыши по окну увеличивает приоритет выполнения программы, процессор нагружается, а в силу этого скорость растет. Однако непонятно, почему без мыши приоритет такой низкий? И как распределяется время процессора между обработкой движения мыши и вычислением формул в тестовой программе? Почему это вообще связано?
Надо отметить, что сделанные по такой же технологии ООП "подоконные" программы (включая версию для Вин16) никакой нагрузки на процессор во время ожидания не дают. И еще я заметил, что досовские программы, сделанные НЕ по системе ООП, будучи запущенными под Виндовс, ведут себя ровно наоборот: в режиме ожидания процессор не загружен вообще, но любое нажатие клавиш, движение мыши и т.д. вызывает всплеск активности ядер, который "успокаивается" через несколько секунд после прекращения активности. Это видно, например, при работе с моим интерпретатором "Дикарь".
К сожалению, у меня нет сейчас возможности перетранслировать досовскую версию, добавив туда регулировку наличия вывода. Изначально все версии были с ним, я не думал о таком диком различии скоростей. Опция появилась совсем недавно (причина описана в блоге), я заново пересоздал все версии программы (включая для Win16), но пересоздать досовскую уже не мог...
В общем, эта моя программа оказалась весьма интересной и показательной. А ведь есть еще варианты запуска нескольких ее копий сразу... Но об этом писать уже не буду, если кому интересно - "поиграйте" с ней сами. На самом деле получается, что производительность компьютера очень сложно оценить просто по набору "процессор/память".
Только напомню, что скачать сразу все версии программы можно в одном архиве на странице ее описания. И помните, что ее исходные тексты тоже доступны в соответствующем разделе сайта. Возможно, я буду развивать данную программу и дальше...