Windows faster than linux

Same program faster on Linux than Windows — why?

The solution to this was found in the question Executable runs faster on Wine than Windows — why? Glibc’s floor() is probably implemented in terms of system libraries.

I have a very small C++ program (

100 lines) for a physics simulation. I have compiled it with gcc 4.6.1 on both Ubuntu Oneiric and Windows XP on the same computer. I used precisely the same command line options (same makefile).

Strangely, on Ubuntu, the program finishes much faster than on Windows (

7.5 s vs 13.5 s). At this point I thought it’s a compiler difference (despite using the same version).

But even more strangely, if I run the Windows executable under wine, it’s still faster than on Windows (I get 11 s «real» and 7.7 s «user» time — and this includes wine startup.)

I’m confused. Surely if the same code is run on the same CPU, there shouldn’t be a difference in the timing.

What can be the reason for this? What could I be doing wrong?

The program does minimal I/O (outputs a single line), and only uses a fixed-length vector from the STL (i.e. no system libraries should be involved). On Ubuntu I used the default gcc and on Windows the Nuwen distribution. I verified that the CPU usage is close to zero when doing the benchmarking (I closed most programs). On Linux I used time for timing. On Windows I used timethis.exe .

UPDATE

I did some more precise timings, comparing the running time for different inputs (run-time must be proportional to the input) of the gcc and msvc-compiled programs on Windows XP, Wine and Linux. All numbers are in seconds and are the minimum of at least 3 runs.

Читайте также:  Список hosts windows 10

On Windows I used timethis.exe (wall time), on Linux and Wine I used time (CPU time). (timethis.exe is broken on Wine) I made sure no other programs were using the CPU and disabled the virus scanner.

The command line options to gcc were -march=pentium-m -Wall -O3 -fno-exceptions -fno-rtti (i.e. exceptions were disabled).

What we see from this data:

the difference is not due to process startup time, as run-times are proportional to the input

Windows vs Linux. Сравниваем производительность систем при помощи бенчмарков

Сегодня мы протестируем операционные системы Windows 10 и Arch Linux c графической оболочкой Gnome 3 на одинаковом железе в играх и бенчмарках и посмотрим, что из этого выйдет. Все системы полностью оригинальные. Тесты проходили по 3 прогона.

Тестовый пк

  • Процессор: Intel Pentium G4560 2/4 3.5 Гигагерц
  • Видеокарта: Nvidia Geforce 1050 2Gb
  • Оперативная память: 2×4 2400
  • Материнская плата: H110M-DGS R3.0 Bios 7.50

Windows 10, версия 2004 (сборка ОС 19041.450) Arch Linux

Сравнение систем по потреблению при старте

Windows — 115-146 процессов при пустом старте, 1.5 Гигабайта потребления, система и драйверы обновлены.

Archlinux — 56 процессов при пустом старте, 500 мегабайт потребления, система и драйверы обновлены.

Для более честного сравнения для системы на основе Linux было выбрано тяжёлое графическое окружение (DE) Gnome 3, известное своими костылями. Но не стоит забывать о существовании оболочек, потребляющих менее 100 мегабайт оперативной памяти. Оптимизаций никаких не производилось кроме установки для Linux lqx ядра и фоновых служб zramswap и anonicy.

Средства записи и мониторинга

Для записи игр и тестов в Windows использовалась программа Bandicam с быстрым кодеком nvenc и контейнером mp4, что минимально (5-10%) влияют на потери, а такжеMSI Autoberner для мониторинга загруженности ресурсов.

Читайте также:  Прекращена работа microsoft windows word

Для записи игр и тестов в Linux использовалась программа SimpleScreenRecorder c аналогичным кодеком и контейнером для минимизации влияния средства записи и разницы, а также Mangohud для мониторинга загруженности ресурсов.

Программы простые и не требуют глубокого понимания или настройки. Игры выбирались с учётом встроенного бенчмарка и являются лицензиями.

Выводы делаю, напрямую сравнивая результаты бенчмарков на минимальных и максимальных параметрах графики с выводом графика времени кадра.

Синтетический тест

Синтетический тест Geekbench 5 оценивает производительность ЦП с работой в разных задачах — сжатие, распаковка, обработка, серф и прочее веселье.

Windows 10: 936 баллов в однопоточном и 2 138 баллов в мультипоточном режимах. Результаты теста по ссылке на сайте geekbench.com Linux: 951 балл в однопоточном и 2 148 баллов в мультипоточном режимах. Результаты теста по ссылке на сайте geekbench.com

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

Тестирование в играх

Открывает наше игровое противостояние прибежище всех раков и причина попадания в армию — Dota 2.

Тест для меня не показывает что-то новое. Отчётливо видно излишнее потребление оперативной и видеопамяти фоновыми процессами системы Windows. Преимущество Linux составляет от 5 до 20 кадров в зависимости от сцены, что нельзя свести на погрешность теста.

Тестирование на максимальных настройках успешно показывает, что разницы в FPS нет, но система Windows больше просаживается во время ожесточённых моментов до 22 FPS, а потребление оперативной памяти значительно возросло. Archlinux обеспечил плавность и играбельность в любых моментах.

Вторым героем теста становится улица моего детства — Counter-Strike: Source.

Сравнение не совсем честное, потому что тестирование идет на уровне разных графических API. Встроенный графический бенчмарк показывает преимущество DX9 над OpenGL, но на самой карте разница ровно противоположная — OpenGL рисует больше кадров.

Читайте также:  Создание загрузочной флешки линукс через линукс

Максимальные настройки графики показывают уверенное преимущество DX9 в плане максимального FPS, но странные подёргивания и ослепляющая желтизна на карте вызывают недоумение.

Третьей игрой для теста станет симулятор подростковых фантазий — Tomb Raider 2013.

Максимальные и минимальные настройки, а также сравнение с DXVK.

Интересные выводы можно сделать по данному ролику. Например, что OpenGL почти мёртв в плане соревновательной части с DX9-12, где идёт упор на максимальный FPS, а не удобство программирования или платформы.

Часть теста с упором в GPU подтверждает предыдущие тесты о преимуществе Dx11 в сравнении с OpenGL и проигрыше Windows-платформы по сравнению с Linux в плане работы с процессором. На это указывает преимущество в минимальном FPS и проигрыш в максимальном.

C OpenGL разобрались. А что, если противопоставить две Windows-версии игры, но одна из них будет запущена под Linux через обёртку DXVK? Результаты почти одинаковы! Мне удалось запустить Windows-версию игры под Linux. Она показывает схожую игровую производительность, а потребляет мой ПК при этом меньше ресурсов.

P.S. Опять этот странный эффект желтизны у DX — проблема DX?

Выводы

Современный Archlinux — это система, потребляющая меньше ресурсов ПК по сравнению с нынешней Windows. Это способствует лучшей производительности в играх с поддержкой Vulkan и равную производительность в проектах, запускающихся через обёртку DXVK. Если вы хотите считать, что ваш ПК — это только ваш ПК, не париться по поводу вечной слежки и всегда иметь всё самое свежее, то Linux — это ваш бро.

P.S. Автор знает и понимает, какие проблемы существуют c античитами, какие способы запуска игр и проблемы есть. Также автор напоминает, что тест производился без использования оптимизаторов и прочих ускоряющих вещей, что даёт надежду на ещё больший выигрыш в Linux.

Видеоверсия, если лень читать

Оцените статью