Оказывается у меня появились постоянные подписчики :)
После одного из комментариев у меня появилась идея протестировать на производительность код, собираемый разными компиляторами под Windows.
Задача: Выяснить, возможно ли без потери производительности использовать ГНУтые компиляторы для высокопроизводительных коммерческих задач под Windows.
Дано:
1) MinGW 4.4.0
2) Visual C/C++ 2008SP1 (из Visual Studio 2008 Express)
3) x64 компилятор из Windows SDK v7.0 (http://en.wikipedia.org/wiki/Microsoft_Windows_SDK, http://www.microsoft.com/en-us/download/details.aspx?id=18950)
---8<---- РЕМАРКА ---8<----
То, как я устанавливал сначала Visual C/C++ 2008SP1 (вместе с SP1) это отдельная песня -- везде лежит Visual C/C++ 2008 Express без SP, и отдельно SP1, который встает только на версии НЕ Express.
Где-то (так и не понял, да и не помню где) раздобыл web инсталлятор
2 728 440 vcsetup.exe
он и содержит Visual C/С++ 2008+SP1
в отличии от
2 701 304 vcsetup.exe
который содержит только Visual C/С++ 2008 без SP1
136 192 ab_mingw440_win32.exe
85 504 ab_vs2008_amd64.exe
72 704 ab_vs2008_win32.exe
При этом IMHO Visual Studio собирал проект раза в 2 быстрее чем QT Creator+MinGW.
А теперь в номера!!! (c)
Тестовый стенд: Ноутбук Acer TimelineX i3-330M RAM 3Gb, Windows7 x64 Home Basic, свап запрещен, канал в интернет 10Mbit, nginx 1.3.33 на 127.0.0.1:80
Выводы:
0: На ноутбуке нельзя проводить производственное тестирование, т.к. он живет своей собственной жизнью даже при отключенных энергосберегающих опциях!!!
1: Все три скомпилированных кода работают примерно одинаково (погрешность менее 1-5-10%)
2: Код скомпилированный MinGW хотя и больше по размеру, но не уступает по производительности коду скомпилированному Visual C/C++ (а иногда и выигрывает (незначительно, но выигрывает!!! :))) ))
3: Переход на компилятор x64 не оправдан для программ использующих менее 2GB RAM ни по производительности скомпилированного кода, ни по количеству танцев с бубнами.
Я выкладываю результаты своих изысканий (http://yadi.sk/d/u2E9NRpg3HJ-E):
1) Исходники с проектными файлами для QT+Mingw, Visual Studio
2) Откомпилированные exe-шники (VS2008x32, VS2008x64, MinGWx32)
3) Результаты тестов в txt и xls форматах
Крайне поучительно будет взглянуть на
1) Настройки QT+Mingw, Visual Studio для компиляции исходников Apache
2) Особенности настройки проектных файлов .pro для QT Creator
3) Особенности написания .bat файлов для замены функций Linux под Windows ;)
Я был бы признателен, если бы кто-нибудь взял бы на себе тяжкий труд по тестированию производительности на десктопной/серверной машине данных программ при этом переключаясь между несколькими OS: WindowsXPx32, Windows7x64, Linux32, Linux64, а затем бы поделился результатами.
После одного из комментариев у меня появилась идея протестировать на производительность код, собираемый разными компиляторами под Windows.
Задача: Выяснить, возможно ли без потери производительности использовать ГНУтые компиляторы для высокопроизводительных коммерческих задач под Windows.
Дано:
1) MinGW 4.4.0
2) Visual C/C++ 2008SP1 (из Visual Studio 2008 Express)
3) x64 компилятор из Windows SDK v7.0 (http://en.wikipedia.org/wiki/Microsoft_Windows_SDK, http://www.microsoft.com/en-us/download/details.aspx?id=18950)
---8<---- РЕМАРКА ---8<----
То, как я устанавливал сначала Visual C/C++ 2008SP1 (вместе с SP1) это отдельная песня -- везде лежит Visual C/C++ 2008 Express без SP, и отдельно SP1, который встает только на версии НЕ Express.
Где-то (так и не понял, да и не помню где) раздобыл web инсталлятор
2 728 440 vcsetup.exe
он и содержит Visual C/С++ 2008+SP1
в отличии от
2 701 304 vcsetup.exe
который содержит только Visual C/С++ 2008 без SP1
Далее прыжки с бубнами на накатывании Windows SDK, причем после очередной итерации выползли ошибки при компиляции проектов :(((
---8<---- РЕМАРКА ---8<----
Но это все мелочи -- в результате я скомпилировал один и тот же исходный код Apache Benchmark из полного комплекта Apache 2.2.24 под тремя разными компиляторами
136 192 ab_mingw440_win32.exe
85 504 ab_vs2008_amd64.exe
72 704 ab_vs2008_win32.exe
При этом IMHO Visual Studio собирал проект раза в 2 быстрее чем QT Creator+MinGW.
А теперь в номера!!! (c)
Тестовый стенд: Ноутбук Acer TimelineX i3-330M RAM 3Gb, Windows7 x64 Home Basic, свап запрещен, канал в интернет 10Mbit, nginx 1.3.33 на 127.0.0.1:80
Win7x64 i3-330M: 60К обращений в 4 трида к localhost@nginx133. Попытка №1 | ||||||||||||||||
Тест 1 | Тест 2 | Тест 3 | Тест 4 | Тест 5 | Тест 6 | Тест 7 | Тест 8 | Тест 9 | Тест 10 | Мин | Средн | Макс | ||||
ab_mingw440_win32.exe | 1 379,54 оpеr pеr sеc | 1 398,09 оpеr pеr sеc | 1 324,43 оpеr pеr sеc | 657,12 оpеr pеr sеc | 657,91 оpеr pеr sеc | 1 402,17 оpеr pеr sеc | 923,67 оpеr pеr sеc | 616,27 оpеr pеr sеc | 658,14 оpеr pеr sеc | 1 372,15 оpеr pеr sеc | 616,27 | -0,21% | 1038,949 | 0,00% | 1402,17 | -1,06% |
ab_vs2008_amd64.exe | 1 310,44 оpеr pеr sеc | 1 412,47 оpеr pеr sеc | 880,73 оpеr pеr sеc | 665,88 оpеr pеr sеc | 682,79 оpеr pеr sеc | 1 417,15 оpеr pеr sеc | 668,90 оpеr pеr sеc | 617,56 оpеr pеr sеc | 667,27 оpеr pеr sеc | 1 313,13 оpеr pеr sеc | 617,56 | 0,00% | 963,632 | -7,25% | 1417,15 | 0,00% |
ab_vs2008_win32.exe | 1 409,88 оpеr pеr sеc | 1 364,85 оpеr pеr sеc | 1 399,11 оpеr pеr sеc | 616,27 оpеr pеr sеc | 667,04 оpеr pеr sеc | 1 384,00 оpеr pеr sеc | 662,33 оpеr pеr sеc | 660,27 оpеr pеr sеc | 664,73 оpеr pеr sеc | 1 408,85 оpеr pеr sеc | 616,27 | -0,21% | 1023,733 | -1,46% | 1409,88 | -0,51% |
Win7x64 i3-330M: 60К обращений в 4 трида к localhost@nginx133. Попытка №2 | ||||||||||||||||
Тест 1 | Тест 2 | Тест 3 | Тест 4 | Тест 5 | Тест 6 | Тест 7 | Тест 8 | Тест 9 | Тест 10 | Мин | Средн | Макс | ||||
ab_mingw440_win32.exe | 1 152,21 оpеr pеr sеc | 1 233,93 оpеr pеr sеc | 1 266,43 оpеr pеr sеc | 631,45 оpеr pеr sеc | 602,55 оpеr pеr sеc | 558,19 оpеr pеr sеc | 610,10 оpеr pеr sеc | 625,80 оpеr pеr sеc | 550,16 оpеr pеr sеc | 572,21 оpеr pеr sеc | 550,16 | -0,27% | 780,303 | 0,00% | 1266,43 | -2,17% |
ab_vs2008_amd64.exe | 1 297,18 оpеr pеr sеc | 1 260,21 оpеr pеr sеc | 559,68 оpеr pеr sеc | 551,81 оpеr pеr sеc | 621,14 оpеr pеr sеc | 576,62 оpеr pеr sеc | 611,57 оpеr pеr sеc | 602,89 оpеr pеr sеc | 605,94 оpеr pеr sеc | 559,64 оpеr pеr sеc | 551,81 | 0,00% | 724,668 | -5,35% | 1297,18 | 0,00% |
ab_vs2008_win32.exe | 1 242,70 оpеr pеr sеc | 1 169,40 оpеr pеr sеc | 1 226,06 оpеr pеr sеc | 621,24 оpеr pеr sеc | 633,31 оpеr pеr sеc | 614,30 оpеr pеr sеc | 610,11 оpеr pеr sеc | 552,25 оpеr pеr sеc | 529,96 оpеr pеr sеc | 535,94 оpеr pеr sеc | 529,96 | -3,54% | 773,527 | -0,65% | 1242,7 | -3,84% |
Win7x64 i3-330M: 60К обращений в 10 тридов к localhost@nginx133 | ||||||||||||||||
Тест 1 | Тест 2 | Тест 3 | Тест 4 | Тест 5 | Тест 6 | Тест 7 | Тест 8 | Тест 9 | Тест 10 | Мин | Средн | Макс | ||||
ab_mingw440_win32.exe | 1 345,75 оpеr pеr sеc | 649,22 оpеr pеr sеc | 624,88 оpеr pеr sеc | 1 111,28 оpеr pеr sеc | 1 144,01 оpеr pеr sеc | 648,48 оpеr pеr sеc | 809,03 оpеr pеr sеc | 1 394,04 оpеr pеr sеc | 625,69 оpеr pеr sеc | 646,52 оpеr pеr sеc | 624,88 | -3,45% | 899,89 | -3,39% | 1394,04 | 0,00% |
ab_vs2008_amd64.exe | 1 274,83 оpеr pеr sеc | 648,92 оpеr pеr sеc | 655,22 оpеr pеr sеc | 1 385,00 оpеr pеr sеc | 652,66 оpеr pеr sеc | 646,19 оpеr pеr sеc | 1 341,99 оpеr pеr sеc | 684,25 оpеr pеr sеc | 659,04 оpеr pеr sеc | 1 366,79 оpеr pеr sеc | 646,19 | 0,00% | 931,489 | -0,35% | 1385 | -0,64% |
ab_vs2008_win32.exe | 1 375,10 оpеr pеr sеc | 648,70 оpеr pеr sеc | 641,77 оpеr pеr sеc | 1 338,72 оpеr pеr sеc | 644,24 оpеr pеr sеc | 629,18 оpеr pеr sеc | 1 383,01 оpеr pеr sеc | 1 382,51 оpеr pеr sеc | 644,14 оpеr pеr sеc | 663,93 оpеr pеr sеc | 629,18 | -2,75% | 935,13 | 0,00% | 1383,01 | -0,78% |
Win7x64 i3-330M: 60К обращений в 20 тридов к localhost@nginx133 | ||||||||||||||||
Тест 1 | Тест 2 | Тест 3 | Тест 4 | Тест 5 | Тест 6 | Тест 7 | Тест 8 | Тест 9 | Тест 10 | Мин | Средн | Макс | ||||
ab_mingw440_win32.exe | 1 329,93 оpеr pеr sеc | 1 371,66 оpеr pеr sеc | 1 387,50 оpеr pеr sеc | 654,44 оpеr pеr sеc | 1 383,01 оpеr pеr sеc | 623,36 оpеr pеr sеc | 656,68 оpеr pеr sеc | 623,36 | -2,24% | 1058,082857 | -8,43% | 1387,5 | -0,32% | |||
ab_vs2008_amd64.exe | 1 392,02 оpеr pеr sеc | 1 392,02 оpеr pеr sеc | 649,03 оpеr pеr sеc | 1 341,52 оpеr pеr sеc | 1 241,49 оpеr pеr sеc | 624,27 оpеr pеr sеc | 1 379,54 оpеr pеr sеc | 624,27 | -2,09% | 1145,698571 | 0,00% | 1392,02 | 0,00% | |||
ab_vs2008_win32.exe | 1 367,28 оpеr pеr sеc | 1 331,31 оpеr pеr sеc | 680,25 оpеr pеr sеc | 993,32 оpеr pеr sеc | 1 379,04 оpеr pеr sеc | 637,20 оpеr pеr sеc | 767,08 оpеr pеr sеc | 637,2 | 0,00% | 1022,211429 | -11,89% | 1379,04 | -0,92% |
|
WinXPx32@VirtualBox: 500 обращений в 10 тридов к google.ru | ||||||||||||||||
Тест 1 | Тест 2 | Тест 3 | Тест 4 | Тест 5 | Тест 6 | Тест 7 | Тест 8 | Тест 9 | Тест 10 | Мин | Средн | Макс | ||||
ab_mingw440_win32.exe | 2,25 оpеr pеr sеc | 2,05 оpеr pеr sеc | 3,31 оpеr pеr sеc | 3,31 оpеr pеr sеc | 2,58 оpеr pеr sеc | 2,05 | -0,06% | 2,7 | 0,00% | 3,31 | 0,00% | |||||
ab_vs2008_win32.exe | 2,44 оpеr pеr sеc | 2,59 оpеr pеr sеc | 2,58 оpеr pеr sеc | 2,49 оpеr pеr sеc | 2,69 оpеr pеr sеc | 2,44 | 0,00% | 2,558 | -0,01% | 2,69 | -0,04% |
Выводы:
0: На ноутбуке нельзя проводить производственное тестирование, т.к. он живет своей собственной жизнью даже при отключенных энергосберегающих опциях!!!
1: Все три скомпилированных кода работают примерно одинаково (погрешность менее 1-5-10%)
2: Код скомпилированный MinGW хотя и больше по размеру, но не уступает по производительности коду скомпилированному Visual C/C++ (а иногда и выигрывает (незначительно, но выигрывает!!! :))) ))
3: Переход на компилятор x64 не оправдан для программ использующих менее 2GB RAM ни по производительности скомпилированного кода, ни по количеству танцев с бубнами.
Я выкладываю результаты своих изысканий (http://yadi.sk/d/u2E9NRpg3HJ-E):
1) Исходники с проектными файлами для QT+Mingw, Visual Studio
2) Откомпилированные exe-шники (VS2008x32, VS2008x64, MinGWx32)
3) Результаты тестов в txt и xls форматах
Крайне поучительно будет взглянуть на
1) Настройки QT+Mingw, Visual Studio для компиляции исходников Apache
2) Особенности настройки проектных файлов .pro для QT Creator
3) Особенности написания .bat файлов для замены функций Linux под Windows ;)
Я был бы признателен, если бы кто-нибудь взял бы на себе тяжкий труд по тестированию производительности на десктопной/серверной машине данных программ при этом переключаясь между несколькими OS: WindowsXPx32, Windows7x64, Linux32, Linux64, а затем бы поделился результатами.
Комментариев нет:
Отправить комментарий