Saya memiliki server tempat saya ingin melakukan tes fungsional otomatis. Ia perlu menginisialisasi beberapa ribu objek total untuk membangunnya dalam model memori, mengambil data dari file konfigurasi, tetapi ini masih sepele untuk komputer dan ini adalah bootup yang hampir seketika ketika dijalankan dari gerhana.
Saat saya menjalankan program yang sama sebagai bagian dari pengujian junit, fase inisialisasi memerlukan waktu sekitar 15 detik, bukan kecepatan sesaat dari aplikasi yang berdiri sendiri. Tidak terlalu lama, tapi jika saya berencana melakukan lusinan tes, itu akan bertambah.
Menurut JVisualVM kali ini tersebar di setengah lusin metode, tidak ada satu metode pun yang memakan waktu lebih lama dari 14% waktu CPU (ini setelah saya mengoptimalkan metode yang menghabiskan 50% CPU). Semua metode yang berjalan adalah metode yang saya perkirakan akan berjalan dan sepertinya memakan persentase yang wajar dari total waktu CPU; Saya tidak dapat membandingkannya dengan server langsung karena server langsung diinisialisasi dengan sangat cepat sehingga saya tidak dapat memulai dan menghentikan JVisualVM dengan cukup cepat untuk membuat profilnya. Sepertinya metode init dari semua objek saya mungkin memerlukan waktu lebih lama, misalnya satu objek menggunakan 3% cpu untuk init, tetapi memiliki waktu mandiri 000 ms dan tidak melakukan panggilan lain; tapi saya tidak tahu apakah itu hasil yang umum menggunakan JVisualVM?
Meskipun tidak masalah, saya melakukan satu hal secara berbeda di Junit vs menjalankan sebagai aplikasi yang berdiri sendiri; Saya menggunakan objek serverMock (meskipun ini bukan ATM tiruan). Itu memperluas objek server saya. Saat ini satu-satunya alasan untuk memperluasnya adalah karena metode run server (yang berjalan tanpa batas waktu menunggu pesan masuk) adalah metode terlindungi yang dipanggil oleh metode main() ketika server dijalankan sebagai jar. Tiruan saya menambahkan metode yang akan memunculkan utas untuk menjalankan metode run server karena saya tidak punya cara lain untuk memulai metode dalam pengujian unit. Namun, perlambatan terjadi pada inisialisasi server sebelum mencapai metode yang dijalankan; jadi menurut saya ini bukan penyebab perlambatan?