たとえば、Bootcampを搭載したMac Miniでは、Team Fortress 2はOSXでは約20fps、Windowsでは約80fpsで動作します。これは一般的なケースのようです。どうしてこれなの?
たとえば、Bootcampを搭載したMac Miniでは、Team Fortress 2はOSXでは約20fps、Windowsでは約80fpsで動作します。これは一般的なケースのようです。どうしてこれなの?
回答:
WindowsのDirect3Dドライバーは、場合によっては特定のゲーム向けに途方もなく最適化されており、個々のハードウェアベンダーによって開発されています。
AppleのOpenGLドライバーは、Appleによって作成および保守(AFAIK)されており、UIを合成するなど、「一般的な」OSでの使用を目的としています。ゲームと高性能スループットの最適化はそれほどありません。
基本的には、たくさんの資源の多くずっと少ないリソースは、Mac上で同じことを行うために用意されていながら、ソースのは、Windows上での高速のDirectXを作りに行っています。
MicrosoftがWindowsやDirectXに導入した最適化を軽視するつもりはありませんが、ほとんどのプログラムはWindowsでより良いパフォーマンスを発揮すると信じています。彼らはWindowsを念頭に置いて設計上の決定を行い、後で他のOS(Mac、Linuxなど)で機能させることを試みます。私は常にこの問題に遭遇しています。他のプロジェクトでは、Windows以外のシステムへの移植で多くの問題が発生しています。最初からそのように計画していたので、非常に少ない労力で複数のOS上に構築するプログラムを繰り返し作成しました。(実際に移植をしつこく行うのではなく)実際にそれを試みたら、何が必要かを学び、追加の作業はほとんど必要ありません。
Macユーザーの仲間として、私は追加の要素を提供したいと思います。OSXのCPUスケジューラは、Windowsよりも「公平」です。
これは一種の複雑なコンピュータサイエンストピックなので、CPUスケジューラについて考える簡単な方法を次に示します。プロセッサは、一度に多くのタスク(開いているすべてのプログラムとバックグラウンドシステムプロセス)を処理する必要があります。実際に実行できるのは一度に2つだけです(たとえば、コアの数とコアあたりのスレッド数の積。デュアルコアi7は一度に4つのタスクを実行できます)。したがって、すべての作業を分割し、それらを交互に実行することで、実際に多くのことを一度に実行しているように見えます。2つのプログラムを実行すると、プロセッサは実際には2つのプログラムの処理を交互に交互に実行し、非常に高速です(ここでは数マイクロ秒、次に数マイクロ秒)。
物事がどの順序でどのくらいの期間実行されるかは、「スケジューリングアルゴリズム」によって決定されます。たとえば、ラウンドロビンスケジューラは、タスクを円状に配置し、各タスクを順番に処理します。別のスケジューラーは、残り時間の少ないものから順にタスクを配置する場合があります。小さなタスクはすぐに実行され、大きなタスクは実行されるまでしばらく待たなければならない場合があります。
WindowsとOS Xは大きく異なり、それらのスケジューリングアルゴリズムも少し異なります。Windowsは物事の優先順位付けについて少し「賢い」ので、コンピュータをより速く見えるようにするために目に見えるプログラムに特別な優先順位を与えます。ただし、OS Xはバックグラウンドプロセスに対してより公平です。全体的なアルゴリズムは2つのOS間でほとんど同じです(どちらもマルチレベルのフィードバックキューです)が、この小さな詳細により、ユーザーエクスペリエンスが異なります。
双方に利点があります。先ほど述べたように、Windowsで表示されるプログラムは、優先度が高くなるため、より速く表示されます。しかし、1つの目に見えるプログラムが大量の電力を消費することを決定した場合、コンピューター全体が少し苦しみます。OS Xのより公平なスケジューラーは、より予測可能で安定した速度をもたらし、オーディオおよびビデオ操作に適しています。たとえば、バックグラウンドで曲を再生している場合、Windowsよりも他のことを同時に行った場合に、途切れることはほとんどありません。
したがって、要点は次のとおりです。WindowsのフルスクリーンゲームはCPUで高い優先順位を取得し、バックグラウンドで実行されているものはすべて待機する必要があります。OS Xでは、これはそれほど当てはまりません。
スケジューラに関するいくつかの技術情報がここに示されています。この回答の残りの部分は、Windowsを10年以上使用して(場合によってはLinuxも)、過去10か月間の私のコンピュータサイエンス教育とOS Xの使用に基づいています。私は時々、より公正なスケジューラに不満を感じますが、他の場合にはその利点に感謝します。
ちなみに、Linuxにはさらに公平なスケジューラー実装があります。これが優れたサーバーになる理由ですが、私の意見ではユーザーエクスペリエンスは低下します。たとえば、コンピューターにタスクが行き詰まっている場合、他のすべてと同じ優先順位が与えられるため、カーソルはスムーズに応答を停止します。これは基本的にWindowsまたはOS Xでは発生しません。
MacOSXに「移植」された一部のゲームは、実際にはエミュレータ内で実行されるWindowsゲームです。例の完全なリストはありませんが、少なくともそのようなSPOREがあるようです。
SPOREが公式にGNU / Linuxでリリースされたことはなく、Macバージョンは古くなっています。Macへの移植は、実際にはCiderと一緒にパッケージ化されたWindowsリリースです。これは、ゲームの周りのWINEの(現在は古い)バージョンをラップした、減価償却されたテクノロジーです。(出典)
エミュレーター内でのソフトウェアの実行は、本質的にそれをネイティブで実行するよりも遅くなります。