Тестирование производительности ПК плюс сравнение производительности терминалов МТ4 и МТ5

 
Я часто задумывался и задавал вопросы на форуме: "Какой компьютер выбрать для максимальной производительности терминалов МТ4 и МТ5 ?", но к сожалению разработчики никогда не давали четких ответов.
Данный вопрос интересует многих в момент апгрейда или покупки нового ПК с упором на производительность МТ, что лучще купить ? на прлатформе Intel или AMD ?
Сколько и какая оперативная память должна быть ? Какая материнская плата? Какой выбрать диск для хранения данных SSD или HDD ?
Сейчас снова у меня стоит вопрос апгрейда своего ПК ...
Это половина вопроса которые меня всегда интересовали, вторая половина :  Разработчики нахваливают производительность и супер скорости терминала МТ5, но как обычному трейдеру или программисту любителю проверить слова разработчиков и лично убедиться в том что они говорят ?
Писать некий код ? А какой ? Чем проверить ? Как вообще сравнить производительность терминалов МТ4 и МТ5 ...
В общем я долго думал и решил написать скрипт тестер производительности ПК и терминалов МТ4 и МТ5. 
Скрипт прикреплен в конце в открытом исходном коде для двух терминалов мт 4 и мт 5.
Часть кодов взята из темы Тестирование нового компилятора MQL5 для x64 платформ - ускорение расчетов от 2 до 10 раз!
Все что я сделал это обьеденил коды всех тестов в один скрипт и добавил все эти коды через класс, то есть скрипт тестирует ПК и терминалы в двух типах программирования Процедурном и ООП.
Так же я добавил несколько тестов связанных с отрисовкой графических обьектов их перемещением и удалением, плюс работа теста склассом CCanvas, плюс замер скорости работы функции CopyRates при копировании 1 000 000 минутных баров.
Всего 45 тестов.
Хочу обратить внимание что я не профессиональный программист и ФИТу не заканчивал, по этому если Вы найдете недочеты или косяки прошу сильно не пинать и предложить свою версию скрипта.
Так же с помощью скрипта можно проверять VPS и VDS хостеров на честность )))) (на тестовых периодах сравнивать производительность)

Предлагаю Вам принять участие в тестировании своих ПК по моему примеру. Я сделал тесты на двух ПК (Мой и ноут моей жены). Тесты при максимальной производительности ПК С пустой автозагрузкой.

Принцип работы скрипта:

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

Мой рабочий пк :

  • Имя ОС         Windows 10 Pro
  • Тип               Компьютер на базе x64
  • Процессор    AMD Phenom(tm) II X6 1100T Processor, 3311 МГц, ядер: 6, логических процессоров: 6
  • ОЗУ              (RAM)    8,00 ГБ
  • Диск             SSD Модель    OCZ-AGILITY3   90 гб

И вот какой результат :


МТ4 МТ5
Во сколько раз МТ5 Быстрее
===TERMINAL INFO=== 0 0

TERMINAL_BUILD 902 1210 Build
TERMINAL_CPU_CORES 6 6 Cores
TERMINAL_DISK_SPACE 14228 14134 Mb
TERMINAL_MEMORY_PHYSICAL 8107 8107 Mb
TERMINAL_MEMORY_TOTAL 4095 16214 Mb
TERMINAL_MEMORY_AVAILABLE 3737 0 Mb
TERMINAL_MEMORY_USED 358 33245 Mb
===TEST=== 0 0

Test Ackermann 2406 0 MilSek Абсолют
Test Ackermann OOP 2969 0 MilSek Абсолют
Test Arrays 21422 297 MilSek 72,13
Test Arrays OOP 7312 437 MilSek 16,73
Test BubbleSort 13422 672 MilSek 19,97
Test BubbleSort OOP 4297 656 MilSek 6,55
Test Call 969 0 MilSek Абсолют
Test Call OOP 906 0 MilSek Абсолют
Test Fibo 2594 0 MilSek Абсолют
Test Fibo OOP 2656 0 MilSek Абсолют
Test Float 2359 0 MilSek Абсолют
Test Float OOP 2516 0 MilSek Абсолют
Test Matrix 20969 672 MilSek 31,20
Test Matrix OOP 7984 656 MilSek 12,17
Test Moments 7578 5578 MilSek 1,36
Test Moments OOP 7266 5594 MilSek 1,30
Test NestedLoop 5672 0 MilSek Абсолют
Test NestedLoop OOP 6015 0 MilSek Абсолют
Test PiCalculate 12000 3515 MilSek 3,41
Test PiCalculate OOP 11953 3500 MilSek 3,42
Test QuickSort 11734 2110 MilSek 5,56
Test QuickSort OOP 12782 1234 MilSek 10,36
Test Random 3297 516 MilSek 6,39
Test Random OOP 3203 531 MilSek 6,03
Test Sieve 18828 1078 MilSek 17,47
Test Sieve OOP 18890 1094 MilSek 17,27
Test StrCat 47 1578 MilSek 0,03
Test StrCat OOP 47 1766 MilSek 0,03
Test String 250 437 MilSek 0,57
Test String OOP 235 453 MilSek 0,52
Test StrPrep 5406 1922 MilSek 2,81
Test StrPrep OOP 5500 1938 MilSek 2,84
Test StrRev 6719 4265 MilSek 1,58
Test StrRev OOP 7125 4297 MilSek 1,66
Test StrSum 5843 3922 MilSek 1,49
Test StrSum OOP 5844 3984 MilSek 1,47
Test ObjectCreate 63 157 MilSek 0,40
Test ObjectMove 46 343 MilSek 0,13
Test ObjectDelete 579 0 MilSek Абсолют
Test ObjectCreate OOP 46 125 MilSek 0,37
Test ObjectMove OOP 63 328 MilSek 0,19
Test ObjectDelete OOP 547 0 MilSek Абсолют
Test CopyRates 94 0 MilSek Абсолют
Test Canvas 30078 28047 MilSek 1,07
Test Print(Hello, world!!!) 1047 7453 MilSek 0,14
Test Final  281594 89609 MilSek 3,14


//+------------------------------------------------------------------+
// Важно!!! Не рекомендуется вносить правки в скрип без понятия последствий.
// Скрипт предназначен для оценки производительности ЭВМ ( Планшет, Десктоп/Стационар, VPS/VDS сервера, Сервера )
// Скрипт тестирует ЭВМ в 45 тестах разной направленности в двух видах программирование ООП и Процедурном
// Часть кода взята из открытых источников https://www.mql5.com/ru/forum/58241   Автор Renat Fatkhullin
// Программу собрал Vladimir Pastushak     https://www.mql5.com/ru/users/voldemar
// Основной показатель производительности - время, чем меньше времени ушло на вычисления тем более производительна ЭВМ и Терминал МТ
//+------------------------------------------------------------------+

Тест жены приложу позже.

Ваши тесты и комментарии приветствуются !

Файлы:
 
Vladimir Pastushak:

Ваши тесты и комментарии приветствуются !

Нули в отдельных строках не смущают?
 
Victor Nikolaev:
Нули в отдельных строках не смущают?

Посмотрите объяснения в первой ссылке.

Это результат нового оптимизирующего компилятора, который додумался оптимизировать код в ноль, вырезав лишнее.

Проигрыш в строковых функциях обязательно исправим.

 

Мне интересно с чем связан такой разброс ?

Test Arrays21422
Test Arrays OOP7312


Почему через ООП то же самое выполняется в 3 раза быстрее ?

 
Renat Fatkhullin:

Посмотрите объяснения в первой ссылке.

Это результат нового оптимизирующего компилятора, который додумался оптимизировать код в ноль, вырезав лишнее.

Проигрыш в строковых функциях обязательно исправим.

Я об этом в курсе. Просто результатам тестов верить нельзя. Если будут реальные расчеты, то цифры будут совсем другими
 

Запустил скрипт на четверке - пошуршал, в логе такая информация

2015.11.01 18:12:04.302 Script VR_System_Test AUDJPY,H1: removed
2015.11.01 18:12:04.294 VR_System_Test AUDJPY,H1: unresolved import function call
2015.11.01 18:12:04.294 Cannot call 'shell32.dll::ShellExecuteW', DLL is not allowed
2015.11.01 18:12:04.293 VR_System_Test AUDJPY,H1: uninit reason 0
<...>
2015.11.01 18:12:03.106 VR_System_Test AUDJPY,H1: Hello, world!!!
2015.11.01 18:06:59.677 VR_System_Test AUDJPY,H1: initialized
2015.11.01 18:06:56.967 Script VR_System_Test AUDJPY,H1: loaded successfully

 В общем - никакую таблицу сам не открыл - иду смотреть, где файл настрадал... 

...\MQL4\Files\System Test\

 
===TERMINAL INFO=== Phenom II 5X 960T
TERMINAL_BUILD 902
TERMINAL_CPU_CORES 5
TERMINAL_DISK_SPACE 5721
TERMINAL_MEMORY_PHYSICAL 16357
TERMINAL_MEMORY_TOTAL 4095
TERMINAL_MEMORY_AVAILABLE 3749
TERMINAL_MEMORY_USED 346
===TEST===  
Test Ackermann 2589
Test Ackermann OOP 3245
Test Arrays 22308
Test Arrays OOP 7847
Test BubbleSort 14524
Test BubbleSort OOP 4680
Test Call 1045
Test Call OOP 967
Test Fibo 2793
Test Fibo OOP 2854
Test Float 2528
Test Float OOP 2745
Test Matrix 22527
Test Matrix OOP 8549
Test Moments 8065
Test Moments OOP 7769
Test NestedLoop 6380
Test NestedLoop OOP 6459
Test PiCalculate 12901
Test PiCalculate OOP 12839
Test QuickSort 13010
Test QuickSort OOP 13791
Test Random 3557
Test Random OOP 3432
Test Sieve 20389
Test Sieve OOP 20155
Test StrCat 47
Test StrCat OOP 47
Test String 265
Test String OOP 250
Test StrPrep 5803
Test StrPrep OOP 5850
Test StrRev 7332
Test StrRev OOP 7566
Test StrSum 6193
Test StrSum OOP 6225
Test ObjectCreate 62
Test ObjectMove 16
Test ObjectDelete 452
Test ObjectCreate OOP 47
Test ObjectMove OOP 31
Test ObjectDelete OOP 437
Test CopyRates 0
Test Canvas 33899
Test Print(Hello, world!!!) 1170
Test Final  303640

 

У меня Phenom II 960T 16 ОЗУ + разлочено ядро(увы MT4 это без разницы) + разгон 300Mhz. Компьютер без перезагрузки 7 дней...
Если у меня большие тесты, то я режу проходы на равные части - обычно 4 и запускаю параллельно 4 терминала - надо использовать все ядра.

 
-Aleks-:

Запустил скрипт на четверке - пошуршал, в логе такая информация

2015.11.01 18:12:04.302 Script VR_System_Test AUDJPY,H1: removed
2015.11.01 18:12:04.294 VR_System_Test AUDJPY,H1: unresolved import function call
2015.11.01 18:12:04.294 Cannot call 'shell32.dll::ShellExecuteW', DLL is not allowed
2015.11.01 18:12:04.293 VR_System_Test AUDJPY,H1: uninit reason 0
<...>
2015.11.01 18:12:03.106 VR_System_Test AUDJPY,H1: Hello, world!!!
2015.11.01 18:06:59.677 VR_System_Test AUDJPY,H1: initialized
2015.11.01 18:06:56.967 Script VR_System_Test AUDJPY,H1: loaded successfully

 В общем - никакую таблицу сам не открыл - иду смотреть, где файл настрадал... 

...\MQL4\Files\System Test\

Что бы это работало нужно разрешить ДЛЛ, в скрипте используется стандартная от виндовс DLL
 

МТ5

Windows 7  (x64 based PC), Intel Core i3  M 350 @ 2.27GHz, RAM: 5186 / 8044 Mb, HDD: 28031 / 76216 Mb

 

===TERMINAL INFO=== 0
TERMINAL_BUILD 1210
TERMINAL_CPU_CORES 4
TERMINAL_DISK_SPACE 28035
TERMINAL_MEMORY_PHYSICAL 8044
TERMINAL_MEMORY_TOTAL 16088
TERMINAL_MEMORY_AVAILABLE 15704
TERMINAL_MEMORY_USED 384
===TEST=== 0
Test Ackermann 0
Test Ackermann OOP 0
Test Arrays 406
Test Arrays OOP 499
Test BubbleSort 1341
Test BubbleSort OOP 1326
Test Call 0
Test Call OOP 0
Test Fibo 0
Test Fibo OOP 0
Test Float 0
Test Float OOP 0
Test Matrix 858
Test Matrix OOP 889
Test Moments 7113
Test Moments OOP 7005
Test NestedLoop 0
Test NestedLoop OOP 0
Test PiCalculate 2917
Test PiCalculate OOP 2917
Test QuickSort 3807
Test QuickSort OOP 1981
Test Random 1030
Test Random OOP 1014
Test Sieve 1466
Test Sieve OOP 1451
Test StrCat 1950
Test StrCat OOP 2153
Test String 655
Test String OOP 671
Test StrPrep 3104
Test StrPrep OOP 3151
Test StrRev 6708
Test StrRev OOP 7223
Test StrSum 6287
Test StrSum OOP 6115
Test ObjectCreate 156
Test ObjectMove 16
Test ObjectDelete 218
Test ObjectCreate OOP 219
Test ObjectMove OOP 15
Test ObjectDelete OOP 219
Test CopyRates 46504
Test Canvas 18486
Test Print(Hello, world!!!) 8268
Test Final  148170

 
Victor Nikolaev:
Я об этом в курсе. Просто результатам тестов верить нельзя. Если будут реальные расчеты, то цифры будут совсем другими

Обоснуйте?

Мое обоснование - это стандартный набор тестов для С/С++ компиляторов, которыми десятки лет проверяют все компиляторы. На них видно качество оптимизатора в самых базовых техниках кодогенерации.

Результаты этих тестов абсолютно реальны и прямо влияют на конечный результат. Это вам не SSE4.x/AVX/AVX2, где на самом деле эффект можно получить в исчезающе малом количестве программ.

 

еще один тест MT5

Windows 7 (x64 based PC), Intel Core i7  860 @ 2.80GHz(разогнан до 3.8Ггц), RAM: 13361 / 16381 Mb, HDD: 54855 / 114470 Mb

===TERMINAL INFO=== 0
TERMINAL_BUILD 1210
TERMINAL_CPU_CORES 8
TERMINAL_DISK_SPACE 54858
TERMINAL_MEMORY_PHYSICAL 16381
TERMINAL_MEMORY_TOTAL 32762
TERMINAL_MEMORY_AVAILABLE 32305
TERMINAL_MEMORY_USED 457
===TEST=== 0
Test Ackermann 0
Test Ackermann OOP 0
Test Arrays 250
Test Arrays OOP 281
Test BubbleSort 795
Test BubbleSort OOP 780
Test Call 0
Test Call OOP 0
Test Fibo 0
Test Fibo OOP 0
Test Float 0
Test Float OOP 0
Test Matrix 499
Test Matrix OOP 515
Test Moments 4134
Test Moments OOP 4134
Test NestedLoop 0
Test NestedLoop OOP 0
Test PiCalculate 1716
Test PiCalculate OOP 1732
Test QuickSort 2215
Test QuickSort OOP 1170
Test Random 593
Test Random OOP 592
Test Sieve 858
Test Sieve OOP 858
Test StrCat 890
Test StrCat OOP 998
Test String 390
Test String OOP 390
Test StrPrep 1825
Test StrPrep OOP 1825
Test StrRev 3885
Test StrRev OOP 3884
Test StrSum 3510
Test StrSum OOP 3526
Test ObjectCreate 109
Test ObjectMove 16
Test ObjectDelete 0
Test ObjectCreate OOP 125
Test ObjectMove OOP 16
Test ObjectDelete OOP 0
Test CopyRates 0
Test Canvas 9453
Test Print(Hello, world!!!) 4275
Test Final  56504