Auf meinem Mac Mini mit Bootcamp läuft Team Fortress 2 beispielsweise unter OSX mit etwa 20 fps und unter Windows mit 80 fps. Dies scheint ein häufiger Fall zu sein. Warum ist das?
Auf meinem Mac Mini mit Bootcamp läuft Team Fortress 2 beispielsweise unter OSX mit etwa 20 fps und unter Windows mit 80 fps. Dies scheint ein häufiger Fall zu sein. Warum ist das?
Antworten:
Direct3D-Treiber unter Windows werden lächerlich optimiert, manchmal für bestimmte Spiele, und von einzelnen Hardwareanbietern entwickelt.
Die OpenGL-Treiber von Apple werden von Apple geschrieben und gewartet (AFAIK) und sind für die "allgemeine" Verwendung des Betriebssystems, die Zusammenstellung der Benutzeroberfläche und so weiter vorgesehen. Es gibt nicht so viele Optimierungen für Spiele und Hochleistungsdurchsatz.
Grundsätzlich haben viele Ressourcen aus vielen Quellen DirectX unter Windows schnell gemacht, während unter Mac viel weniger Ressourcen zur Verfügung stehen, um dasselbe zu tun.
Obwohl ich die Optimierung, die Microsoft möglicherweise in Windows und / oder DirectX vorgenommen hat, nicht außer Acht lasse, bin ich der festen Überzeugung, dass die meisten Programme unter Windows eine bessere Leistung erbringen, nur weil sich die Entwickler darauf konzentrieren (dort liegt das Geld). Sie treffen Entwurfsentscheidungen unter Berücksichtigung von Windows und versuchen später, sie unter anderen Betriebssystemen (Mac, Linux usw.) zum Laufen zu bringen. Bei der Arbeit stoße ich ständig darauf: Andere Projekte haben so große Probleme mit der Portierung auf Nicht-Windows-Systeme, weil die Entwickler dies als Nachdenken betrachteten. Ich habe wiederholt Programme geschrieben, die mit sehr geringem Aufwand auf mehreren Betriebssystemen aufbauen, weil ich es von Anfang an so geplant habe. Sobald Sie wirklich versucht haben, dies zu tun (im Gegensatz dazu, den Port widerwillig nachträglich auszuführen), lernen Sie, was es braucht, und es erfordert nur sehr wenig zusätzlichen Aufwand.
Als Mitbenutzer von Mac möchte ich einen zusätzlichen Faktor anbieten: Der CPU-Scheduler in OS X ist "fairer" als in Windows.
Dies ist eine Art kompliziertes Informatik-Thema. Hier ist eine einfache Möglichkeit, sich Ihren CPU-Scheduler vorzustellen: Ihr Prozessor muss viele Aufgaben gleichzeitig erledigen (alle Ihre offenen Programme sowie Hintergrundsystemprozesse). Es kann nur tatsächlich nur ein paar Dinge gleichzeitig erledigen (die Anzahl der Kerne multipliziert mit der Anzahl der Threads pro Kern; ein Dual-Core-i7 kann beispielsweise 4 Aufgaben gleichzeitig ausführen). Es teilt also die gesamte Arbeit in Teile auf und wechselt zwischen ihnen, so dass es so aussieht, als würde es tatsächlich viele Dinge gleichzeitig tun. Wenn Sie zwei Programme ausführen, wechselt der Prozessor tatsächlich nur zwischen der Verarbeitung dieser beiden Programme, sehr schnell (z. B. einige Mikrosekunden hier und einige Mikrosekunden dort).
Das Muster, für das Dinge in welcher Reihenfolge und für wie lange ausgeführt werden, wird durch einen "Planungsalgorithmus" festgelegt. Beispielsweise ordnet der Round-Robin-Scheduler die Aufgaben nur in einem Kreis an und verarbeitet sie nacheinander. Ein anderer Planer ordnet die Aufgaben möglicherweise so an, dass die verbleibende Zeit am wenigsten bis am meisten bleibt. Kleine Aufgaben werden schnell erledigt, und große Aufgaben müssen möglicherweise eine Weile warten, bevor sie erledigt werden.
Windows und OS X sind sehr unterschiedlich, und auch ihre Planungsalgorithmen sind etwas unterschiedlich. Windows ist etwas "schlauer" in Bezug auf die Priorisierung von Dingen, daher wird sichtbaren Programmen zusätzliche Priorität eingeräumt, damit der Computer schneller angezeigt wird. OS X ist jedoch fairer gegenüber Hintergrundprozessen. Die allgemeinen Algorithmen sind zwischen den beiden Betriebssystemen sehr ähnlich (sie sind beide mehrstufige Rückkopplungswarteschlangen ), aber dieses kleine Detail führt zu einer unterschiedlichen Benutzererfahrung.
Beide Seiten haben ihre Vorteile. Wie gesagt, sichtbare Programme in Windows werden schneller angezeigt, weil sie mehr Priorität erhalten. Wenn jedoch ein sichtbares Programm viel Strom verbraucht, leidet der gesamte Computer etwas mehr. Der fairere Scheduler von OS X führt zu vorhersehbareren und stabileren Geschwindigkeiten, was sich gut für Audio- und Videobetriebe eignet. Wenn Sie beispielsweise ein Lied im Hintergrund abspielen, ist es weniger wahrscheinlich, dass es stottert, wenn Sie andere Dinge gleichzeitig tun als unter Windows.
Der entscheidende Punkt ist also: Ein Vollbildspiel unter Windows wird auf der CPU eine hohe Priorität erhalten, und alles, was im Hintergrund läuft, muss nur warten. In OS X ist dies weniger der Fall.
Einige technische Informationen zu den Schedulern werden gegeben hier . Der Rest dieser Antwort stammt aus meiner Informatikausbildung und meiner Verwendung von OS X in den letzten 10 Monaten, nachdem ich Windows über 10 Jahre (und gelegentlich Linux) verwendet habe. Ich bin manchmal frustriert über den faireren Planer, aber manchmal schätze ich seine Vorteile.
Linux hat übrigens eine noch fairere Scheduler-Implementierung. Dies macht es zu einem großartigen Server, aber meiner Meinung nach ist die Benutzererfahrung beeinträchtigt. Wenn Ihr Computer beispielsweise mit Aufgaben überfüllt ist, reagiert Ihr Cursor nicht mehr reibungslos, da er die gleiche Priorität wie alles andere hat. Dies geschieht grundsätzlich nie unter Windows oder OS X.
Einige Spiele, die auf MacOSX "portiert" wurden, sind Windows- Spiele, die in einem Emulator ausgeführt werden. Obwohl ich keine vollständige Liste von Beispielen habe, scheint es zumindest SPORE zu geben, die so war:
SPORE wurde nie offiziell unter GNU / Linux veröffentlicht, und die Mac-Version ist schlecht gealtert. Der Mac-Port ist eigentlich die Windows-Version, die mit Cider geliefert wird. Hierbei handelt es sich um eine veraltete Technologie, die eine (jetzt alte) Version von WINE in Spiele einwickelt. ( Quelle )
Das Ausführen einer Software in einem Emulator ist per Definition langsamer als das native Ausführen.