ตัวอย่างเช่นใน Mac Mini ของฉันกับ Bootcamp Team Fortress 2 ทำงานที่ประมาณ 20fps ใน OSX และ 80fps ใน Windows นี่เป็นกรณีทั่วไป ทำไมนี้
ตัวอย่างเช่นใน Mac Mini ของฉันกับ Bootcamp Team Fortress 2 ทำงานที่ประมาณ 20fps ใน OSX และ 80fps ใน Windows นี่เป็นกรณีทั่วไป ทำไมนี้
คำตอบ:
ไดรเวอร์ Direct3D บน Windows ได้รับการปรับแต่งอย่างน่าขันบางครั้งสำหรับเกมเฉพาะและพัฒนาโดยผู้จำหน่ายฮาร์ดแวร์รายบุคคล
ไดรเวอร์ OpenGL ของ Apple ได้รับการเขียนและดูแลรักษา (AFAIK) โดย Apple และมีไว้สำหรับการใช้งาน "ทั่วไป" ของระบบปฏิบัติการรวมถึง UI และอะไรก็ตาม ไม่มีการเพิ่มประสิทธิภาพมากนักสำหรับการเล่นเกมและปริมาณงานที่มีประสิทธิภาพสูง
โดยทั่วไปจำนวนมากของทรัพยากรจากจำนวนมากของแหล่งที่มาได้ไปเข้าสู่การทำ DirectX รวดเร็วบน Windows, ในขณะที่ทรัพยากรน้อยลงมากพร้อมที่จะทำเช่นเดียวกันบน Mac
ในขณะที่ฉันจะไม่ลดประสิทธิภาพการปรับแต่งที่ Microsoft อาจใส่ลงใน Windows และ / หรือ DirectX ฉันเชื่อมั่นอย่างยิ่งว่าโปรแกรมส่วนใหญ่จะทำงานได้ดีขึ้นบน Windows เพียงเพราะนั่นคือสิ่งที่นักพัฒนาให้ความสำคัญ พวกเขาตัดสินใจเกี่ยวกับการออกแบบโดยคำนึงถึง Windows จากนั้นจึงพยายามทำให้มันใช้งานได้ในระบบปฏิบัติการอื่น (Mac, Linux, ฯลฯ ) ฉันพบปัญหานี้ในที่ทำงาน: โครงการอื่นมีปัญหามากกับการย้ายระบบไปยังระบบที่ไม่ใช่ Windows เพราะนักพัฒนาถือว่ามันเป็นความคิดที่ดี ฉันได้เขียนโปรแกรมซ้ำ ๆ ที่สร้างขึ้นบนหลาย ๆ OS ด้วยความพยายามเพียงเล็กน้อยเพราะฉันวางแผนตั้งแต่ต้น เมื่อคุณพยายามทำมันจริงๆ (ซึ่งตรงกันข้ามกับการทำพอร์ตอย่างไม่เต็มใจ) คุณจะได้เรียนรู้สิ่งที่ต้องใช้และต้องใช้ความพยายามเพิ่มขึ้นเล็กน้อย
ในฐานะผู้ใช้ Mac ฉันอยากจะเสนอปัจจัยเพิ่มเติม: ตัวกำหนดตารางเวลา CPU ใน OS X นั้น "ยุติธรรม" มากกว่าใน Windows
นี่เป็นหัวข้อวิทยาศาสตร์คอมพิวเตอร์ที่ซับซ้อนดังนั้นนี่เป็นวิธีคิดง่ายๆเกี่ยวกับตัวกำหนดตารางเวลา CPU ของคุณ: โปรเซสเซอร์ของคุณจะต้องทำงานหลายอย่างพร้อมกัน (โปรแกรมที่เปิดอยู่ทั้งหมดของคุณรวมถึงกระบวนการระบบเบื้องหลัง) จริงๆแล้วมันสามารถทำสองสามอย่างพร้อมกันได้ (จำนวนของคอร์คูณจำนวนเธรดต่อคอร์เช่น dual-core i7 สามารถทำงานได้ 4 งานพร้อมกันเป็นต้น) ดังนั้นมันจึงแยกงานทั้งหมดออกเป็นชิ้น ๆ และสลับไปมาระหว่างกันเพื่อให้ดูเหมือนว่าจริง ๆ แล้วมันทำอะไรหลายอย่างพร้อมกัน เมื่อคุณรันโปรแกรมสองโปรแกรมตัวประมวลผลจะสลับไปมาระหว่างการประมวลผลทั้งสองโปรแกรมนั้นเร็วมาก (เช่นไม่กี่ไมโครวินาทีที่นี่แล้วจากนั้นสองสามไมโครวินาที)
รูปแบบที่จะดำเนินการสิ่งต่าง ๆ ตามลำดับและระยะเวลาที่ตัดสินใจโดย "อัลกอริทึมการตั้งเวลา" ตัวอย่างเช่นตัวจัดตารางรอบ robin เพียงจัดเรียงงานในวงกลมและประมวลผลตามลำดับ ตัวจัดตารางเวลาอื่นอาจจัดเรียงงานจากเวลาที่เหลือน้อยที่สุด - งานเล็ก ๆ จะเสร็จอย่างรวดเร็วและงานใหญ่อาจต้องรอสักครู่ก่อนที่จะทำ
Windows และ OS X นั้นแตกต่างกันมากและอัลกอริทึมการตั้งเวลาของพวกเขาก็แตกต่างกันเล็กน้อยเช่นกัน Windows ค่อนข้าง "ฉลาดขึ้น" เกี่ยวกับการจัดลำดับความสำคัญของสิ่งต่าง ๆ ดังนั้นจึงมีความสำคัญเป็นพิเศษสำหรับโปรแกรมที่มองเห็นเพื่อให้คอมพิวเตอร์ปรากฏเร็วขึ้น อย่างไรก็ตาม OS X มีความเป็นธรรมมากกว่าในกระบวนการเบื้องหลัง อัลกอริทึมโดยรวมนั้นเหมือนกันมากระหว่างสองระบบปฏิบัติการ (ทั้งคู่เป็นข้อเสนอแนะหลายระดับ ) แต่รายละเอียดเล็ก ๆ น้อย ๆ นี้ส่งผลให้ผู้ใช้มีประสบการณ์ที่แตกต่างกัน
ทั้งสองฝ่ายมีข้อดี อย่างที่ฉันบอกโปรแกรมที่มองเห็นได้ใน Windows จะปรากฏเร็วขึ้นเพราะพวกเขาได้รับความสำคัญมากกว่า แต่หากโปรแกรมหนึ่งที่มองเห็นได้ตัดสินใจที่จะใช้พลังงานจำนวนมากคอมพิวเตอร์ทั้งเครื่องจะมีปัญหาเพิ่มขึ้นอีกเล็กน้อย ตัวกำหนดตารางเวลาที่ยุติธรรมของ OS X จะส่งผลให้สามารถคาดการณ์ได้และมีความเร็วคงที่ซึ่งดีสำหรับการใช้งานเสียงและวิดีโอ ตัวอย่างเช่นหากคุณกำลังเล่นเพลงในพื้นหลังมีโอกาสน้อยที่จะพูดติดอ่างเมื่อคุณทำสิ่งอื่น ๆ ในเวลาเดียวกันมากกว่าใน Windows
ประเด็นก็คือประเด็นนี้: เกมแบบเต็มหน้าจอใน Windows จะได้รับความสำคัญสูงใน CPU และสิ่งที่ทำงานในพื้นหลังจะต้องรอ ใน OS X นี่เป็นกรณีที่น้อยกว่า
บางข้อมูลทางเทคนิคเกี่ยวกับกำหนดการจะได้รับที่นี่ ; ส่วนที่เหลือของคำตอบนี้มาจากการศึกษาด้านวิทยาการคอมพิวเตอร์และการใช้งาน OS X ของฉันในช่วง 10 เดือนที่ผ่านมาหลังจากใช้ Windows มานานกว่า 10 ปี (และ Linux เป็นครั้งคราว) บางครั้งฉันก็ผิดหวังกับตัวกำหนดตารางเวลาที่ยุติธรรมกว่า แต่บางครั้งฉันก็ชื่นชมข้อดีของมัน
ลินุกซ์ยังมีการใช้ตัวกำหนดตารางเวลาที่ยุติธรรมยิ่งกว่าเดิม นี่คือสิ่งที่ทำให้มันเป็นเซิร์ฟเวอร์ที่ดี แต่ในความคิดของฉันประสบการณ์ของผู้ใช้จะลดลง ตัวอย่างเช่นเมื่อคอมพิวเตอร์ของคุณจมอยู่กับงานเคอร์เซอร์ของคุณจะหยุดตอบสนองได้อย่างราบรื่นเพราะมันให้ความสำคัญเท่ากับสิ่งอื่น ๆ สิ่งนี้ไม่เคยเกิดขึ้นใน Windows หรือ OS X
เกมบางเกมที่ถูก "ส่งต่อ" ไปยัง MacOSX นั้นเป็นเกมของWindows ที่ทำงานอยู่ในตัวจำลอง แม้ว่าฉันจะไม่มีรายการตัวอย่างที่สมบูรณ์ แต่ดูเหมือนว่ามี SPORE อย่างน้อยที่เป็นเช่นนั้น:
SPORE ไม่เคยเปิดตัวอย่างเป็นทางการใน GNU / Linux และรุ่น Mac มีอายุต่ำ จริง ๆ แล้วพอร์ตของ Mac นั้นเป็น Windows รุ่นที่บรรจุด้วย Cider ซึ่งเป็นเทคโนโลยีที่ตัดค่าเสื่อมราคาซึ่งครอบคลุม WINE เวอร์ชั่นเก่า (ตอนนี้) รอบ ๆ เกม ( ที่มา )
การรันซอฟต์แวร์ภายในตัวจำลองได้โดยนิยามช้ากว่าการรันแบบดั้งเดิม