Ad esempio, sul mio Mac Mini con Bootcamp, Team Fortress 2 funziona a circa 20 fps in OSX e 80 fps in Windows. Questo sembra essere un caso comune. Perchè è questo?
Ad esempio, sul mio Mac Mini con Bootcamp, Team Fortress 2 funziona a circa 20 fps in OSX e 80 fps in Windows. Questo sembra essere un caso comune. Perchè è questo?
Risposte:
I driver Direct3D su Windows sono ridicolmente ottimizzati, a volte per giochi specifici, e sviluppati da singoli fornitori di hardware.
I driver OpenGL di Apple sono scritti e gestiti (AFAIK) da Apple e sono destinati all'uso del sistema operativo "generale", che compongono l'interfaccia utente e quant'altro. Non c'è così tanta ottimizzazione per gaming e throughput ad alte prestazioni.
Fondamentalmente, molte risorse provenienti da molte fonti hanno contribuito a rendere DirectX veloce su Windows, mentre sono disponibili molte meno risorse per fare lo stesso su Mac.
Anche se non escluderò l'ottimizzazione che Microsoft potrebbe aver messo su Windows e / o DirectX, credo fermamente che la maggior parte dei programmi funzioni meglio su Windows semplicemente perché è quello su cui si concentrano gli sviluppatori (ecco dove sono i soldi). Prendono decisioni di progettazione pensando a Windows, e successivamente cercano di farlo funzionare su altri sistemi operativi (Mac, Linux, ecc.). Mi imbatto costantemente al lavoro: altri progetti hanno così tanti problemi con il porting su sistemi non Windows perché gli sviluppatori lo hanno trattato come un ripensamento. Ho ripetutamente scritto programmi che si basano su più sistemi operativi con il minimo sforzo perché l'ho pianificato in questo modo dall'inizio. Una volta che hai davvero provato a farlo (invece di fare a malincuore il porto dopo il fatto), impari cosa ci vuole e richiede pochissimo sforzo extra.
Come collega Mac, vorrei offrire un ulteriore fattore: lo scheduler della CPU in OS X è più "equo" che in Windows.
Questa è una specie di argomento informatico complicato, quindi ecco un modo semplice di pensare al tuo programmatore di CPU: il tuo processore deve destreggiarsi tra molte attività contemporaneamente (tutti i tuoi programmi aperti, oltre a processi di sistema in background). In realtà può fare solo un paio di cose alla volta (il numero di core moltiplicato per il numero di thread per core; un i7 dual-core può fare 4 attività contemporaneamente, per esempio). Quindi divide tutto il lavoro in pezzi e si alterna tra loro in modo che sembri effettivamente fare molte cose contemporaneamente. Quando si eseguono due programmi, il processore in realtà si alterna semplicemente avanti e indietro tra l'elaborazione di quei due programmi, molto velocemente (come, alcuni microsecondi qui, e poi alcuni microsecondi lì).
Il modello per cui le cose vengono eseguite in quale ordine e per quanto tempo viene deciso da un "algoritmo di schedulazione". Ad esempio, il pianificatore round robin organizza semplicemente le attività in un cerchio e le elabora in ordine. Un altro programmatore potrebbe organizzare le attività dal minimo alla maggior parte del tempo rimanente: piccole attività verrebbero eseguite rapidamente e grandi attività potrebbero dover attendere un po 'prima di essere eseguite.
Windows e OS X sono molto diversi e anche i loro algoritmi di pianificazione sono leggermente diversi. Windows è un po 'più "intelligente" nel definire le priorità delle cose, quindi dà una priorità extra ai programmi visibili per rendere il computer più veloce. OS X, tuttavia, è più giusto nei processi in background. Gli algoritmi generali sono più o meno gli stessi tra i due sistemi operativi (sono entrambe code di feedback multilivello ), ma questo piccolo dettaglio si traduce in un'esperienza utente diversa.
Entrambe le parti hanno i loro vantaggi. Come ho detto, i programmi visibili in Windows appariranno più velocemente perché hanno più priorità; ma se un programma visibile decide di prendere molta energia, l'intero computer soffre un po 'di più. Lo scheduler più equo di OS X produce velocità più prevedibili e stabili, il che è buono per le operazioni audio e video. Ad esempio, se stai riproducendo un brano in background, è meno probabile che balbetti quando fai altre cose contemporaneamente rispetto a Windows.
Quindi, il punto da asporto è questo: un gioco a schermo intero in Windows avrà la massima priorità sulla CPU e tutto ciò che è in esecuzione in background dovrà solo aspettare. In OS X, questo è meno il caso.
Alcune informazioni tecniche sugli scheduler sono fornite qui ; il resto di questa risposta proviene dalla mia educazione informatica e dal mio utilizzo di OS X negli ultimi 10 mesi, dopo aver usato Windows per oltre 10 anni (e Linux occasionalmente). A volte sono frustrato dal programmatore più equo, ma altre volte ne apprezzo i vantaggi.
Linux, a proposito, ha un'implementazione dello scheduler ancora più equa; questo è ciò che lo rende un ottimo server, ma a mio avviso l'esperienza dell'utente è degradata. Ad esempio, quando il tuo computer è impantanato di attività, il cursore smetterà di rispondere senza problemi perché ha la stessa priorità di tutto il resto. Questo in pratica non succede mai in Windows o OS X.
Alcuni giochi che sono stati "portati" su MacOSX sono in realtà giochi Windows eseguiti all'interno di un emulatore. Anche se non ho un elenco completo di esempi, sembra che almeno SPORE fosse così:
SPORE non è mai stato ufficialmente rilasciato su GNU / Linux e la versione per Mac è scaduta male. La porta Mac è in realtà la versione di Windows fornita con Cider, che è una tecnologia deprezzata che avvolge una versione (ormai vecchia) di WINE attorno ai giochi. ( Fonte )
L'esecuzione di un software all'interno di un emulatore è per definizione più lenta rispetto all'esecuzione nativa.