Например, на моем Mac Mini с Bootcamp Team Fortress 2 работает со скоростью 20 кадров в секунду в OSX и 80 кадров в секунду в Windows. Это похоже на частый случай. Почему это?
Например, на моем Mac Mini с Bootcamp Team Fortress 2 работает со скоростью 20 кадров в секунду в OSX и 80 кадров в секунду в Windows. Это похоже на частый случай. Почему это?
Ответы:
Драйверы Direct3D для Windows смехотворно оптимизированы, иногда для конкретных игр, и разработаны отдельными поставщиками оборудования.
Драйверы Apple OpenGL написаны и поддерживаются (AFAIK) Apple и предназначены для «общего» использования ОС, составления пользовательского интерфейса и еще много чего. Там нет такой большой оптимизации для игр и высокой производительности.
По сути, многие ресурсы из многих источников были направлены на то, чтобы сделать DirectX быстрым в Windows, и гораздо меньше ресурсов доступно для того же на Mac.
Хотя я не буду сбрасывать со счетов оптимизацию, которую Microsoft, возможно, внедрила в Windows и / или DirectX, я твердо убежден, что большинство программ работают лучше на Windows просто потому, что именно на это ориентируются разработчики (вот где деньги). Они принимают проектные решения с учетом Windows, а затем стараются заставить его работать в других ОС (Mac, Linux и т. Д.). Я постоянно сталкиваюсь с этим на работе: у других проектов так много проблем с портированием на системы, отличные от Windows, потому что разработчики восприняли это как запоздалую мысль. Я неоднократно писал программы, основанные на нескольких ОС, и при этом очень мало усилий, потому что я планировал это с самого начала. Как только вы действительно попытаетесь это сделать (в отличие от неохотного создания порта после факта), вы узнаете, что для этого нужно, и это потребует совсем немного дополнительных усилий.
Как один из пользователей Mac, я хотел бы предложить дополнительный фактор: планировщик ЦП в OS X более «справедливый», чем в Windows.
Это своего рода сложная тема информатики, так что вот простой способ подумать о вашем планировщике ЦП: ваш процессор должен манипулировать многими задачами одновременно (все ваши открытые программы плюс фоновые системные процессы). Фактически он может выполнять только пару действий одновременно (количество ядер умножается на количество потоков на ядро; двухъядерный i7 может, например, выполнять 4 задачи одновременно). Таким образом, он разбивает всю работу на части и чередуется между ними, так что создается впечатление, что он действительно делает много вещей одновременно. Когда вы запускаете две программы, процессор просто чередует обработку этих двух программ, очень быстро (например, несколько микросекунд здесь, а затем несколько микросекунд там).
Шаблон, для которого все выполняется в каком порядке и на какой срок, определяется «алгоритмом планирования». Например, планировщик циклического перебора просто упорядочивает задачи по кругу и обрабатывает каждое из них по порядку. Другой планировщик может упорядочить задачи с минимального до оставшегося времени - небольшие задачи будут выполняться быстро, а большим задачам придется подождать некоторое время, прежде чем они будут выполнены.
Windows и OS X очень разные, и их алгоритмы планирования также немного отличаются. Windows немного «умнее» распределяет приоритеты, поэтому уделяет больше внимания видимым программам, чтобы компьютер быстрее появлялся. OS X, однако, более справедлива для фоновых процессов. Общие алгоритмы одинаковы для двух ОС (обе они представляют собой многоуровневые очереди обратной связи ), но эта маленькая деталь приводит к разному восприятию пользователя.
Обе стороны имеют свои преимущества. Как я уже сказал, видимые программы в Windows будут появляться быстрее, потому что они получают больший приоритет; но если одна видимая программа решает потреблять много энергии, весь компьютер страдает немного больше. Более честный планировщик OS X обеспечивает более предсказуемые и стабильные скорости, что хорошо для аудио и видео операций. Например, если вы играете песню в фоновом режиме, она вряд ли заикается, когда вы делаете другие вещи одновременно, чем в Windows.
Итак, суть в следующем: полноэкранная игра в Windows получит высокий приоритет для процессора, и все, что работает в фоновом режиме, просто будет ждать. В OS X это менее верно.
Некоторая техническая информация о планировщиках дана здесь ; остальная часть этого ответа - мое образование в области компьютерных наук и использование OS X в течение последних 10 месяцев, после использования Windows более 10 лет (и иногда Linux). Иногда меня расстраивает более честный планировщик, но иногда я ценю его преимущества.
У Linux, кстати, есть еще более справедливая реализация планировщика; это то, что делает его отличным сервером, но, на мой взгляд, пользовательский опыт ухудшается. Например, когда ваш компьютер перегружен задачами, ваш курсор перестанет реагировать плавно, потому что ему присвоен тот же приоритет, что и всем остальным. Это в основном никогда не происходит в Windows или OS X.
Некоторые игры, которые были «портированы» на MacOSX, на самом деле являются играми для Windows, работающими в эмуляторе. Хотя у меня нет полного списка примеров, похоже, что есть хотя бы SPORE:
SPORE никогда не был официально выпущен на GNU / Linux, а версия для Mac плохо устарела. Порт Mac на самом деле является выпуском Windows, поставляемым с Cider, который является устаревшей технологией, охватывающей (теперь уже старую) версию WINE вокруг игр. ( Источник )
Запуск программного обеспечения в эмуляторе по определению медленнее, чем запуск его в исходном состоянии.