ฉันควรจะเรียกเก็บขยะระหว่างการโหลดหน้าจอหรือไม่?


9

เมื่อเร็ว ๆ นี้ฉันอ่าน Garbage Collection เล็กน้อยจากความอยากรู้อยากเห็นและมีบางอย่างที่ทำซ้ำบ่อยๆ: การเก็บขยะอาจทำให้โปรแกรมช้าลงอย่างกระทันหันขึ้นอยู่กับ "ความลึก" ของคอลเลกชัน

แต่ในวิดีโอเกมมีช่วงเวลาที่ผู้ใช้ไม่สามารถสังเกตเห็นความล่าช้าเล็กน้อย: หน้าจอการโหลด ดังนั้นฉันคิดว่าอาจเป็นประโยชน์ในการดำเนินการรวบรวมขยะเต็มรูปแบบในระหว่างขั้นตอนการโหลด (ผ่านทาง Collect ()) ต้องรออีกหนึ่งหรือสองวินาทีไม่ควรส่งผลกระทบต่อผู้ใช้จริงๆ

คำถามของฉันคือมีประโยชน์จริง ๆ หรือไม่มีประโยชน์จริง ๆ ในการทำเช่นนี้หรือไม่?


เป็นส่วนหนึ่งของกระบวนการดีบักสำหรับเกมของฉันฉันได้ให้ผู้ใช้เลือกที่จะเรียก Garbage Collector ได้ตลอดเวลา มันอาจมีอยู่ในโครงสร้างสุดท้ายของเกมด้วยเช่นกัน ฉันขอแนะนำให้เรียกมันในระหว่างการโหลดหน้าจอและโดยทั่วไปในเวลาอื่นซึ่งจะไม่รบกวนผู้ใช้ หากเกมของคุณมีแอนิเมชั่นความตายซึ่งไปที่หน้าจอสีดำนี่จะเป็นโอกาสที่ดีในการโทรหานักสะสมขยะเช่นกัน
Krythic

คำตอบ:


13

ใช่เรียกว่าเป็นสิ่งสุดท้ายที่คุณทำเมื่อโหลด

สิ่งนี้จะเพิ่มเวลาระหว่างระดับเริ่มต้นและความล่าช้าครั้งแรกเนื่องจาก GC

คุณควรพยายามลดการจัดสรรโดยทั่วไปให้น้อยที่สุดด้วยดังนั้นคุณจะไม่ได้รับการล่าช้าระหว่างระดับ

ดูประสิทธิภาพที่ไม่ดีใน 360 และ WP7และTwin Paths to Garbage Collector Nirvana


1
นอกจากนี้มันค่อนข้างสวยเวลาเดียวที่คุณควรเรียกมันว่า - โดยเฉพาะกับเฟรมเวิร์กขนาดกะทัดรัด (XBox, WinPhone)
Jonathan Dickinson

1
@JonathanDickinson: อย่างแน่นอน มันควรเท่านั้นจริงๆจะเรียกว่าที่ผู้ใช้คาดหวังว่าจะหยุดการทำงานชั่วคราว (โหลดโดยทั่วไปอาจจะประหยัดมากเกินไป) และแน่นอนไม่ได้เป็นส่วนหนึ่งของห่วง / เหตุการณ์ปกติ
George Duckett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.