Haruskah saya memanggil pemulung saat memuat layar?


9

JADI, saya membaca sedikit tentang Pengumpulan Sampah akhir-akhir ini, karena penasaran, dan ada sesuatu yang cukup sering diulang: pengumpulan sampah dapat menyebabkan program tiba-tiba melambat, tergantung dari "kedalaman" koleksi.

Namun dalam permainan video, ada saat di mana pengguna tidak dapat benar-benar melihat kelambatan kecil: memuat layar. Jadi, saya pikir, mungkin berguna untuk melanjutkan pengumpulan sampah penuh selama fase pemuatan (via Collect ()), harus menunggu satu atau dua detik lebih lama seharusnya tidak benar-benar berdampak pada pengguna.

Pertanyaan saya adalah, apakah ini benar-benar berguna, atau tidak ada manfaat nyata untuk melakukan ini?


Sebagai bagian dari proses debug untuk permainan saya, saya telah menyediakan opsi kepada pengguna untuk menelepon Pengumpul Sampah kapan saja. Bergantung pada bagaimana ini berlangsung, itu mungkin juga ada di build akhir permainan, juga. Saya akan menyarankan memanggilnya selama memuat layar dan umumnya di waktu lain di mana itu tidak akan mengganggu pengguna secara visual. Jika gim Anda memiliki animasi kematian yang mengarah ke layar hitam, ini juga akan menjadi peluang yang sempurna untuk memanggil pengumpul sampah.
Krythic

Jawaban:


13

Ya, sebut itu sebagai hal terakhir yang Anda lakukan saat memuat.

Ini akan memaksimalkan waktu antara level mulai dan jeda pertama karena GC.

Anda juga harus mencoba meminimalkan alokasi secara umum sehingga Anda tidak mendapatkan keterlambatan lagi selama level.

Lihat Kinerja buruk pada 360 dan WP7 dan Twin Paths To Garbage Collector Nirvana


1
Juga cukup banyak SAJA waktu Anda menyebutnya - terutama pada kerangka kerja yang ringkas (XBox, WinPhone).
Jonathan Dickinson

1
@ JonathanDickinson: Tentu saja. Seharusnya hanya benar-benar disebut di mana pengguna akan mengharapkan jeda (memuat biasanya, mungkin menyimpan juga), dan jelas bukan sebagai bagian dari loop / acara reguler.
George Duckett
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.