Por ejemplo, en mi Mac Mini con Bootcamp, Team Fortress 2 funciona a aproximadamente 20 fps en OSX y 80 fps en Windows. Este parece ser un caso común. ¿Por qué es esto?
Por ejemplo, en mi Mac Mini con Bootcamp, Team Fortress 2 funciona a aproximadamente 20 fps en OSX y 80 fps en Windows. Este parece ser un caso común. ¿Por qué es esto?
Respuestas:
Los controladores Direct3D en Windows están ridículamente optimizados, a veces para juegos específicos, y desarrollados por proveedores de hardware individuales.
Los controladores OpenGL de Apple están escritos y mantenidos (AFAIK) por Apple, y están destinados para el uso del sistema operativo "general", componiendo la interfaz de usuario y otras cosas. No hay tanta optimización para juegos y rendimiento de alto rendimiento.
Básicamente, muchos recursos de muchas fuentes se han dedicado a hacer que DirectX sea rápido en Windows, mientras que hay muchos menos recursos disponibles para hacer lo mismo en Mac.
Si bien no descartaré la optimización que Microsoft pudo haber puesto en Windows y / o DirectX, creo firmemente que la mayoría de los programas funcionan mejor en Windows simplemente porque eso es en lo que se centran los desarrolladores (ahí es donde está el dinero). Toman decisiones de diseño con Windows en mente y luego intentan que funcione en otros sistemas operativos (Mac, Linux, etc.). Constantemente me encuentro con esto en el trabajo: otros proyectos tienen tantos problemas para portar a sistemas que no son de Windows porque los desarrolladores lo trataron como una idea posterior. Repetidamente he escrito programas que se basan en múltiples sistemas operativos con muy poco esfuerzo porque lo planeé de esa manera desde el principio. Una vez que realmente ha intentado hacerlo (en lugar de hacer el puerto a regañadientes después del hecho), aprende lo que se necesita y requiere muy poco esfuerzo adicional.
Como otro usuario de Mac, me gustaría ofrecer un factor adicional: el programador de CPU en OS X es más "justo" que en Windows.
Este es un tema complicado de ciencias de la computación, por lo que aquí hay una manera simple de pensar en su programador de CPU: su procesador tiene que hacer malabarismos con muchas tareas a la vez (todos sus programas abiertos, más los procesos del sistema en segundo plano). En realidad, solo puede hacer un par de cosas a la vez (la cantidad de núcleos multiplicada por la cantidad de subprocesos por núcleo; un i7 de doble núcleo puede hacer 4 tareas a la vez, por ejemplo). Por lo tanto, divide todo el trabajo en pedazos, y alterna entre ellos para que parezca que realmente está haciendo muchas cosas a la vez. Cuando ejecuta dos programas, el procesador en realidad solo alterna de un lado a otro entre el procesamiento de esos dos programas, realmente rápido (como unos pocos microsegundos aquí y luego unos pocos microsegundos allí).
El patrón para el que se ejecutan las cosas en qué orden y durante cuánto tiempo lo decide un "algoritmo de programación". Por ejemplo, el planificador round robin organiza las tareas en un círculo y procesa cada una en orden. Otro programador podría organizar las tareas desde el tiempo restante hasta el más mínimo: las tareas pequeñas se realizarían rápidamente y las tareas grandes podrían tener que esperar un tiempo antes de realizarse.
Windows y OS X son muy diferentes, y sus algoritmos de programación también son un poco diferentes. Windows es un poco más "inteligente" en cuanto a priorizar las cosas, por lo que otorga prioridad adicional a los programas visibles para que la computadora parezca más rápida. OS X, sin embargo, es más justo para los procesos en segundo plano. Los algoritmos generales son muy parecidos entre los dos sistemas operativos (ambos son colas de retroalimentación multinivel ), pero este pequeño detalle da como resultado una experiencia de usuario diferente.
Ambas partes tienen sus ventajas. Como dije, los programas visibles en Windows aparecerán más rápido porque tienen más prioridad; pero si un programa visible decide tomar mucha energía, toda la computadora sufre un poco más. El programador más justo de OS X da como resultado velocidades más predecibles y estables, lo que es bueno para las operaciones de audio y video. Por ejemplo, si está reproduciendo una canción en segundo plano, es menos probable que tartamudee cuando hace otras cosas al mismo tiempo que en Windows.
Entonces, el punto clave es este: un juego de pantalla completa en Windows tendrá alta prioridad en la CPU y todo lo que se ejecute en segundo plano tendrá que esperar. En OS X, este es menos el caso.
Aquí se proporciona información técnica sobre los planificadores ; el resto de esta respuesta proviene de mi educación en informática y mi uso de OS X durante los últimos 10 meses, después de haber usado Windows durante más de 10 años (y Linux ocasionalmente). A veces estoy frustrado por el planificador más justo, pero otras veces aprecio sus ventajas.
Linux, por cierto, tiene una implementación de planificador aún más justa; Esto es lo que lo convierte en un gran servidor, pero en mi opinión la experiencia del usuario está degradada. Por ejemplo, cuando su computadora está empantanada con tareas, su cursor dejará de responder sin problemas porque se le da la misma prioridad que todo lo demás. Esto básicamente nunca sucede en Windows u OS X.
Algunos juegos que han sido "portados" a MacOSX son en realidad juegos de Windows que se ejecutan dentro de un emulador. Si bien no tengo una lista completa de ejemplos, parece que hay al menos SPORE que era así:
SPORE nunca se lanzó oficialmente en GNU / Linux, y la versión de Mac envejeció mal. El puerto Mac es en realidad el lanzamiento de Windows empaquetado con Cider, que es una tecnología depreciada que envuelve una versión (ahora antigua) de WINE en torno a los juegos. ( Fuente )
Ejecutar un software dentro de un emulador es, por definición, más lento que ejecutarlo de forma nativa.