Por exemplo, no meu Mac Mini com Bootcamp, o Team Fortress 2 é executado a cerca de 20fps no OSX e 80fps no Windows. Este parece ser um caso comum. Por que é isso?
Por exemplo, no meu Mac Mini com Bootcamp, o Team Fortress 2 é executado a cerca de 20fps no OSX e 80fps no Windows. Este parece ser um caso comum. Por que é isso?
Respostas:
Os drivers do Direct3D no Windows são ridiculamente otimizados, às vezes para jogos específicos, e desenvolvidos por fornecedores de hardware individuais.
Os drivers OpenGL da Apple são gravados e mantidos (AFAIK) pela Apple e destinam-se ao uso "geral" do SO, compondo a interface do usuário e outros enfeites. Não há tanta otimização para jogos e taxa de transferência de alto desempenho.
Basicamente, muitos recursos de várias fontes foram utilizados para tornar o DirectX rápido no Windows, enquanto muito menos recursos estão disponíveis para fazer o mesmo no Mac.
Embora não descarte a otimização que a Microsoft pode ter colocado no Windows e / ou no DirectX, acredito firmemente que a maioria dos programas tem um desempenho melhor no Windows simplesmente porque é nisso que os desenvolvedores se concentram (é aí que está o dinheiro). Eles tomam decisões de design com o Windows em mente e depois tentam fazê-lo funcionar em outros sistemas operacionais (Mac, Linux etc.). Eu sempre me deparo com isso no trabalho: outros projetos têm muitos problemas em migrar para sistemas que não são Windows porque os desenvolvedores o trataram como uma reflexão tardia. Escrevi repetidamente programas que se baseiam em vários sistemas operacionais com muito pouco esforço, porque planejei dessa maneira desde o início. Uma vez que você realmente tentou fazê-lo (em vez de fazer a porta de má vontade depois do fato), você aprende o que é preciso e requer muito pouco esforço extra.
Como colega usuário do Mac, gostaria de oferecer um fator adicional: o agendador de CPU no OS X é mais "justo" do que no Windows.
Esse é um tópico complicado de ciência da computação, então aqui está uma maneira simples de pensar em seu agendador de CPU: seu processador precisa executar várias tarefas ao mesmo tempo (todos os seus programas abertos, além de processos do sistema em segundo plano). Na verdade, ele só pode fazer algumas coisas ao mesmo tempo (o número de núcleos vezes o número de threads por núcleo; um i7 de núcleo duplo pode executar 4 tarefas ao mesmo tempo, por exemplo). Então, divide todo o trabalho em pedaços e alterna entre eles, para que pareça que ele está fazendo muitas coisas ao mesmo tempo. Quando você executa dois programas, o processador está apenas alternando entre o processamento desses dois programas, muito rápido (como alguns microssegundos aqui e depois alguns microssegundos).
O padrão para o qual as coisas são executadas em que ordem e por quanto tempo é decidido por um "algoritmo de agendamento". Por exemplo, o agendador round robin apenas organiza as tarefas em um círculo e processa cada uma em ordem. Outro agendador pode organizar as tarefas do menor tempo possível - pequenas tarefas seriam feitas rapidamente e grandes tarefas podem ter que esperar um pouco antes de serem feitas.
Windows e OS X são muito diferentes e seus algoritmos de agendamento também são um pouco diferentes. O Windows é um pouco mais "inteligente" em priorizar as coisas, por isso dá prioridade extra aos programas visíveis para fazer o computador parecer mais rápido. O OS X, no entanto, é mais justo em processos em segundo plano. Os algoritmos gerais são praticamente os mesmos entre os dois sistemas operacionais (ambos são filas de feedback multinível ), mas esse pequeno detalhe resulta em uma experiência do usuário diferente.
Ambos os lados têm suas vantagens. Como eu disse, os programas visíveis no Windows aparecerão mais rapidamente porque têm mais prioridade; mas se um programa visível decide consumir muita energia, o computador inteiro sofre um pouco mais. O agendador mais justo do OS X resulta em velocidades mais previsíveis e estáveis, o que é bom para operações de áudio e vídeo. Por exemplo, se você estiver tocando uma música em segundo plano, é menos provável que gagueje ao fazer outras coisas ao mesmo tempo que no Windows.
Portanto, o ponto principal é o seguinte: um jogo em tela cheia no Windows terá alta prioridade na CPU e tudo o que estiver sendo executado em segundo plano terá que esperar. No OS X, esse é menos o caso.
Algumas informações técnicas sobre os agendadores são fornecidas aqui ; o restante desta resposta é da minha formação em ciência da computação e do uso do OS X nos últimos 10 meses, depois de usar o Windows por mais de 10 anos (e o Linux ocasionalmente). Às vezes, fico frustrado com o agendador mais justo, mas outras vezes aprecio suas vantagens.
A propósito, o Linux tem uma implementação de agendador ainda mais justa; é isso que o torna um ótimo servidor, mas, na minha opinião, a experiência do usuário é degradada. Por exemplo, quando o computador está sobrecarregado com tarefas, o cursor para de responder sem problemas porque recebe a mesma prioridade que tudo o resto. Isso basicamente nunca acontece no Windows ou no OS X.
Alguns jogos que foram "portados" para o MacOSX são na verdade jogos do Windows executando em um emulador. Embora eu não tenha uma lista completa de exemplos, parece que há pelo menos o SPORE assim:
O SPORE nunca foi lançado oficialmente no GNU / Linux, e a versão para Mac envelheceu mal. A porta Mac é, na verdade, a versão do Windows empacotada com a Cider, que é uma tecnologia depreciada que envolve uma versão (agora antiga) do WINE em torno dos jogos. ( Fonte )
A execução de um software em um emulador é, por definição, mais lenta que a execução nativa.