Saya membandingkan dua metode berulang untuk membalikkan matriks kuadrat acak. Karena matriksnya acak, setiap test case mengambil jumlah iterasi dan waktu yang berbeda yang berbeda. Pertanyaan saya adalah, di atas rata-rata waktu CPU, adalah nilai rata-rata dari iterasi yang diambil oleh kedua metode informasi yang berguna untuk membandingkan metode.
performance
benchmarking
srijan
sumber
sumber
Jawaban:
Secara umum, kedua metode perbandingan kinerja memiliki tempatnya masing-masing.
Membandingkan waktu cpu adalah metrik yang paling menarik, karena pada akhirnya Anda benar-benar tertarik dengan metode mana yang lebih cepat. (Tetapi pastikan bahwa kriteria terminasi sebanding; misalnya, bahwa kedua metode menghasilkan perkiraan dengan akurasi yang sama). Kekurangannya adalah ini hanya memberi tahu Anda metode mana (dan yang lebih penting, implementasi mana ) yang lebih cepat pada mesin tempat Anda melakukan tes. Tidak ada jaminan bahwa mesin yang berbeda dengan arsitektur atau perangkat lunak yang berbeda akan memilih pemenang yang sama.
Membandingkan angka iterasi , di sisi lain, adalah mesin independen, tetapi berpotensi menyesatkan jika kedua metode memiliki iterasi yang sangat berbeda - dalam hal ini metode dengan iterasi yang lebih sedikit tetapi lebih mahal mungkin tidak disukai (misalnya, metode Newton vs gradien untuk optimasi jika Anda hanya membutuhkan akurasi yang sangat rendah).
Jadi, ya, masuk akal untuk memberikan kedua angka [1], dan saya sering melihatnya dilakukan di publikasi. Ada juga opsi ketiga:
[1] Statistik pasti hadir lebih dari beberapa kali; jika Anda menunjukkan cara, jangan lupa untuk memasukkan standar deviasi juga.
sumber
Saya menemukan jumlah iterasi menjadi metrik yang menyesatkan karena ini menunjukkan "kecepatan" ketika tidak. Untuk contoh sederhana membandingkan beberapa prekondisi berbeda yang menunjukkan perbedaan ini, lihat di sini: http://www.dealii.org/developer/doxygen/deal.II/step_6.html#Possibilityforextensions
sumber
Seandainya tidak jelas dalam jawaban lain, jumlah iterasi yang baik untuk argumen big-O.
Ini tidak baik untuk kecepatan absolut, karena itu tergantung pada rata-rata waktu per iterasi, yang mungkin berbeda antara metode dengan faktor besar.
Sebagai contoh, ada kecenderungan untuk mengabaikan biaya penghitungan indeks array, dan itu mungkin merupakan sebagian besar dari waktu CPU.
TAMBAH: Juga, seperti yang telah saya tunjukkan di tempat lain, untuk setiap doa metode biasanya ada biaya setup. Kemudian jika matriks biasanya tidak terlalu besar, biaya setup itu sendiri dapat menyebabkan sebagian besar waktu CPU (sehingga menghapusnya akan membuat perbedaan besar dalam kecepatan).
sumber