예를 들어 Bootcamp가있는 Mac Mini에서 Team Fortress 2는 OSX에서 약 20fps, Windows에서 80fps로 실행됩니다. 이것은 일반적인 경우 인 것 같습니다. 왜 이런거야?
예를 들어 Bootcamp가있는 Mac Mini에서 Team Fortress 2는 OSX에서 약 20fps, Windows에서 80fps로 실행됩니다. 이것은 일반적인 경우 인 것 같습니다. 왜 이런거야?
답변:
Windows의 Direct3D 드라이버는 때로는 특정 게임에 맞게 엄청나게 최적화되어 있으며 개별 하드웨어 공급 업체에서 개발했습니다.
Apple의 OpenFA 드라이버는 Apple에서 작성 및 유지 보수 (AFAIK)하며 UI를 구성하는 등의 "일반적인"OS 사용을위한 것입니다. 게임 및 고성능 처리량에 대한 최적화는 그리 많지 않습니다.
기본적으로, 많은 A로부터 자원을 많이 훨씬 적은 자원이 Mac에서 동일한 작업을 수행 할 수있는 동안 소스의 빠르고, 윈도우에서의 DirectX를 만들기로 갔다.
Microsoft가 Windows 및 / 또는 DirectX에 적용했을 수있는 최적화를 할인하지는 않지만 대부분의 프로그램은 개발자가 중점을 두는 것 (즉, 돈이있는 곳)이기 때문에 Windows에서 더 나은 성능을 낼 수 있다고 믿습니다. 그들은 Windows를 염두에두고 디자인 결정을 한 다음 나중에 다른 OS (Mac, Linux 등)에서 작동하도록 노력합니다. 나는 계속해서 직장 에서이 문제를 겪습니다. 다른 프로젝트는 Windows가 아닌 시스템으로 이식하는 데 너무 많은 어려움을 겪습니다. 처음부터 그렇게 계획했기 때문에 적은 노력으로 여러 OS에서 빌드하는 프로그램을 반복해서 작성했습니다. 실제로 포트를 실제로 시도한 후에 (실제로 포트를 과감하게 수행하는 것이 아니라), 필요한 것을 배우고 추가 노력이 거의 필요하지 않습니다.
다른 Mac 사용자에게는 추가 요소를 제공하고 싶습니다. OS X의 CPU 스케줄러는 Windows보다 "공정"합니다.
이것은 복잡한 컴퓨터 과학 주제이므로 CPU 스케줄러를 생각하는 간단한 방법이 있습니다. 프로세서는 한 번에 많은 작업 (모든 열린 프로그램과 백그라운드 시스템 프로세스)을 저글링해야합니다. 실제로 는 한 번에 몇 가지 작업 만 수행 할 수 있습니다 (코어 수에 코어 당 스레드 수를 곱한 경우, 예를 들어 듀얼 코어 i7은 한 번에 4 개의 작업을 수행 할 수 있음). 따라서 모든 작업을 여러 조각으로 나누고 그 사이를 번갈아 가며 실제로 한 번에 많은 일을하는 것처럼 보입니다. 두 개의 프로그램을 실행할 때 프로세서는 실제로 두 개의 프로그램을 처리 할 때마다 앞뒤로 번갈아 가며 (여기서는 몇 마이크로 초, 몇 마이크로 초) 매우 빠릅니다.
"스케줄링 알고리즘"에 의해 어떤 순서로 그리고 얼마나 오랫동안 실행되는지에 대한 패턴. 예를 들어 라운드 로빈 스케줄러는 작업을 원으로 정렬하고 각 작업을 순서대로 처리합니다. 다른 스케줄러는 남은 시간부터 가장 적은 시간까지 작업을 정렬 할 수 있습니다. 작은 작업은 빠르게 수행되며 큰 작업은 완료되기 전에 잠시 기다려야 할 수 있습니다.
Windows와 OS X는 매우 다르며 예약 알고리즘도 약간 다릅니다. Windows는 우선 순위를 정하는 데있어 "지능적"이므로 컴퓨터를 더 빨리 표시하기 위해 프로그램을 우선적으로 보여줍니다. 그러나 OS X은 백그라운드 프로세스보다 더 공정합니다. 전체 알고리즘은 두 OS 사이에서 거의 동일 하지만 ( 모두 다중 레벨 피드백 큐임 )이 작은 세부 사항은 다른 사용자 경험을 초래합니다.
양쪽 모두 장점이 있습니다. 내가 말했듯이 Windows에서 보이는 프로그램은 우선 순위가 높아지기 때문에 더 빨리 나타납니다. 그러나 하나의 눈에 보이는 프로그램이 많은 전력을 소비하기로 결정하면 전체 컴퓨터가 약간 더 고통받습니다. OS X의보다 공정한 스케줄러는보다 예측 가능하고 안정적인 속도를 제공하므로 오디오 및 비디오 작업에 좋습니다. 예를 들어 백그라운드에서 노래를 재생하는 경우 Windows에서와 동시에 다른 작업을 수행 할 때 더듬을 가능성이 줄어 듭니다.
따라서 중요한 점은 Windows의 전체 화면 게임이 CPU에서 우선 순위가 높아지고 백그라운드에서 실행되는 모든 항목은 기다려야한다는 것입니다. OS X에서는 그렇지 않습니다.
스케줄러에 대한 일부 기술 정보는 여기에 있습니다 . 이 답변의 나머지 부분은 지난 10 개월 동안 Windows를 10 년 이상 (그리고 때로는 Linux) 사용한 후 컴퓨터 과학 교육과 지난 10 개월 동안의 OS X 사용에 대한 것입니다. 때로는 더 공정한 스케줄러에 좌절하지만 다른 경우에는 그 장점에 감사합니다.
그런데 리눅스는 훨씬 더 공정한 스케줄러 구현을 가지고있다. 이것이 훌륭한 서버이지만, 제 생각에는 사용자 경험이 저하됩니다. 예를 들어, 컴퓨터가 작업을 수행 할 때 커서는 다른 모든 것과 동일한 우선 순위를 갖기 때문에 부드럽게 응답하지 않습니다. 이것은 기본적으로 Windows 또는 OS X에서는 발생하지 않습니다.
MacOSX로 포팅 된 일부 게임은 실제로 에뮬레이터 내에서 실행되는 Windows 게임입니다. 전체 예제 목록이 없지만 최소한 다음과 같은 SPORE가있는 것 같습니다.
SPORE는 GNU / Linux에서 공식적으로 출시 된 적이 없으며 Mac 버전의 성능이 좋지 않습니다. Mac 포트는 실제로 Cider와 함께 패키지로 제공되는 Windows 릴리스로, 게임 주위에 (현재 오래된) WINE 버전을 포함하는 감가 상각 기술입니다. ( 소스 )
에뮬레이터 내에서 소프트웨어를 실행하는 것은 기본적으로 소프트웨어를 실행하는 것보다 느립니다.