Saya bertanya-tanya apa pendekatan atau pemikiran orang tentang mengotomatisasi pengujian kinerja dalam XNA. Saat ini saya melihat hanya bekerja di 2d, tetapi itu menimbulkan banyak bidang di mana kinerja dapat ditingkatkan dengan implementasi yang berbeda.
Contohnya adalah jika Anda memiliki 2 implementasi yang berbeda dari partisi spasial, yang satu mungkin lebih cepat dari yang lain tetapi tanpa melakukan beberapa pengujian kinerja yang sebenarnya Anda tidak akan dapat mengetahui yang mana yang pasti (kecuali jika Anda melihat kode itu sangat lambat secara pasti di tertentu bagian). Anda bisa menulis unit test yang untuk jangka waktu tertentu terus menambah / memperbarui / menghapus entitas untuk kedua implementasi dan melihat berapa banyak yang dibuat dalam setiap jangka waktu dan yang lebih tinggi akan lebih cepat (dalam contoh yang diberikan ini).
Contoh tingkat lebih tinggi lainnya adalah jika Anda ingin melihat berapa banyak entitas yang dapat Anda miliki di layar secara kasar tanpa melebihi 60fps. Masalah dengan ini adalah untuk mengotomatiskannya, Anda perlu menggunakan trik bentuk tersembunyi atau hal lain untuk memulai permainan tiruan dan murni menguji bagian mana yang Anda sayangi dan nonaktifkan yang lainnya.
Saya tahu ini bukan urusan sederhana, bahkan jika Anda dapat mengotomatiskan tes, benar-benar terserah manusia untuk menginterpretasikan jika hasilnya cukup berkinerja, tetapi sebagai bagian dari langkah membangun Anda dapat menjalankan tes ini dan menerbitkannya. hasil di suatu tempat untuk perbandingan.
Dengan cara ini jika Anda beralih dari versi 1.1 ke 1.2 tetapi telah mengubah beberapa algoritma yang mendasari Anda mungkin memperhatikan bahwa secara umum skor kinerja akan naik, yang berarti Anda telah meningkatkan kinerja aplikasi secara keseluruhan, dan kemudian dari 1,2 menjadi 1,3 Anda mungkin memperhatikan Anda kemudian telah menurunkan kinerja keseluruhan sedikit.
Jadi, adakah yang mengotomatiskan hal semacam ini dalam proyek mereka, dan jika demikian, bagaimana Anda mengukur perbandingan kinerja Anda pada tingkat tinggi dan kerangka kerja apa yang Anda gunakan untuk menguji? Karena Anda telah menulis kode Anda sehingga dapat diuji / dapat dipermainkan untuk sebagian besar Anda hanya dapat menggunakan tes Anda sebagai mekanisme untuk mendapatkan beberapa hasil kinerja ...
=== Edit ===
Hanya untuk kejelasan, saya lebih tertarik dengan cara terbaik untuk menggunakan tes otomatis dalam XNA untuk melacak kinerja Anda, tidak bermain pengujian atau menebak dengan menjalankan game Anda secara manual di mesin. Ini benar-benar berbeda dengan melihat apakah game Anda dapat dimainkan pada perangkat keras X, ini lebih tentang melacak perubahan kinerja saat mesin game / kerangka kerja Anda berubah.
Seperti disebutkan dalam salah satu komentar, Anda dapat dengan mudah menguji "berapa banyak node yang dapat saya sisipkan / hapus / perbarui dalam QuadTreeA dalam 2 detik", tetapi Anda harus secara fisik melihat hasil ini setiap kali untuk melihat apakah telah berubah, yang mungkin baik dan masih lebih baik daripada hanya mengandalkan bermain untuk melihat apakah Anda melihat ada perbedaan antara versi. Namun jika Anda memasukkan Assert untuk memberi tahu Anda tentang kegagalan jika lebih rendah dari katakanlah 5.000 dalam 2 detik Anda memiliki tes rapuh karena kemudian kontekstual ke perangkat keras, bukan hanya implementasi. Meskipun demikian dikatakan tes otomatis semacam ini hanya benar-benar ada gunanya jika Anda menjalankan tes Anda sebagai semacam pipa pembangunan yaitu:
Checkout -> Jalankan Tes Unit -> Jalankan Tes Integrasi -> Jalankan Uji Kinerja -> Paket
Jadi, Anda dapat dengan mudah membandingkan statistik dari satu bangunan ke yang lain di server CI sebagai semacam laporan, dan sekali lagi ini mungkin tidak banyak berarti bagi siapa pun jika Anda tidak terbiasa dengan Integrasi Berkelanjutan. Inti utama dari pertanyaan ini adalah untuk melihat bagaimana orang mengelola ini di antara bangunan dan bagaimana mereka menemukan cara terbaik untuk melaporkannya. Seperti yang saya katakan itu bisa subjektif tetapi karena pengetahuan akan diperoleh dari jawaban itu sepertinya pertanyaan yang berharga.