Компания Valve, следуя указаниям Гейба Ньюэлла, серьезно взялась за оптимизацию своего игрового движка для Linux. Разработчикам удалось добиться того, чтобы игра Left 4 Dead 2 шла на 32-битной Ubuntu 12.04 значительно быстрее, чем на 64-битной Windows 7. При этом аппаратные спецификации и в первом, и во втором случае абсолютно одинаковые.
В ходе тестирования оказалось, что на Windows 7 с использованием Direct3D производительность игры составила 270,6 кадра в секунду. В Linux-дистрибутиве Left 4 Dead 2 сначала показывала 6 кадров в секунду, но после серии оптимизаций этот показатель удалось увеличить до 315 fps. При этом использовалась спецификация OpenGL. По словам разработчиков, даже если в Windows использовать OpenGL вместо Direct3D, производительность игры все равно ниже, чем на Linux, — 303,4 кадра в секунду.
В качестве преимуществ Linux представители Valve назвали открытость платформы и легкость оптимизации игрового движка Source.
Если игре не нужны теробайты памяти, то 64-битность — это почти двойная нагрузка на шину памяти.
Ага, но только по адресации (используется редко), зато 4-хкратное увеличение числа регистров (используются часто) + инструкции SSE.
А что, SSE для х86 внезапно недоступны?
Для абстрактных, сферических в вакууме, компьютера и кода – да. (По крайней мере подобную архитектуру можно себе представить.)
Но "64-битные" процессоры интел (которые не-итаниумы только) и АМД сделаны одновременно и 64-битными, и 32-битными.
Кроме того, если у вас в программе числа integer(4), или, например, integer(1) или integer(2), то в integer(8) они сами собой не превращаются. Например при передаче по 64-битной шине памяти будут за такт переданы два числа integer(4) – т.е., в два раза быстрее будет, а не в два раза медленнее! ((-;
________________
И, кстати, та "32-битная убунта" почти наверняка была с ядром PAE ;-).
Вообще, результат очень и очень удивительный. Во-первых, ранние тесты показывали, что производительность OpenGL-кода даже в винде уступает аналогичному Direct3D-коду.
Во-вторых, эти же тесты говорили, что под линуксом OpenGL ещё медленнее, чем он же под виндой.
Если серьёзно же, то тут всё зависит от того, насколько хорошо валвы, собственно, оптимизировали код работы с Direct3D и OpenGL.
В лучшем случае окажется, что разработка для OpenGL окажется _проще_ разработки для Direct3D, а на оптимизацию придётся тратить либо меньше, либо столько же времени.
В худшем -- другие разработчики просто не смогут проделать столько же работы над своими OpenGL-движками, сколько проделал Valve.
В любом случае, будет очень интересно посмотреть на то, насколько выгодным для разработчиков проприетарных Linux-игр окажется наличие исходников нужных им частей системы и насколько кооперативными проявят себя разработчики (как проприетарных, так и свободных) драйверов NVidia и AMD.
*в сравнении с написанием Direct3D-кода для Windows.