Pertanyaan Bagaimana profil berbeda dari logging?


Bagaimana profil berbeda dari logging?

Apakah hanya profil yang digunakan untuk pengukuran kinerja untuk melihat berapa lama masing-masing fungsi? Atau saya pergi?

Biasanya, bagaimana cara profil perpustakaan digunakan?

Apa jenis statistik yang diperoleh dengan profil?


7
2017-10-28 03:30


asal


Jawaban:


Logging memberi tahu Anda apa terjadi. Ini bagus untuk forensik dan debugging.

Profiling mengkuantifikasi bahwa: ini memberi tahu Anda berapa banyak waktu yang dihabiskan kode Anda di setiap area, atau berapa kali satu kali kode dijalankan. Ini membantu Anda meningkatkan kinerja kode Anda.

Profil biasanya beroperasi pada tingkat baris kode, panggilan fungsi, atau kadang-kadang file. Untuk setiap level, biasanya dapat memberi tahu Anda:

  • Berapa kali unit itu dieksekusi. Umumnya kurang penting untuk mengoptimalkan kode yang jarang digunakan daripada kode yang mengeksekusi jutaan kali. Satu pengecualian adalah kode yang membuat pengguna (atau proses lain) menunggu untuk menyelesaikannya.

  • Berapa kali a cabang diambil, katakanlah dalam sebuah if atau switch pernyataan. Sekali lagi, Anda biasanya sangat peduli tentang mengoptimalkan kode yang sering digunakan.

  • Berapa lama Dihabiskan dalam fungsi tertentu. PERINGATAN: bahkan pengembang berpengalaman sering terkejut dengan hasil ini. Sangat sulit untuk memprediksi di mana "waktu Anda tenggelam".

  • Berapa lama dihabiskan dalam suatu fungsi dan semua fungsi yang disebut dalam fungsi itu. Mungkin bukan fungsi itu sendiri, tetapi anak-anaknya, yang perlu dioptimalkan.

  • Berapa kali unit itu dipanggil oleh masing-masing penelepon. Anda mungkin menemukan bahwa fungsi tertentu disebut terutama dari tempat yang tidak terduga.

Berbekal data dari seorang profiler yang baik, Anda sering dapat memperoleh peningkatan signifikan dalam kinerja dengan usaha yang relatif sedikit.


20
2017-10-28 03:33



Profiling adalah tentang menentukan kinerja berkenaan dengan fungsi / pemanggilan metode, mis.

  • Waktu yang dihabiskan dalam fungsi
  • Waktu yang dihabiskan dalam fungsi + waktu yang dihabiskan dalam fungsi anak
  • Berapa kali fungsi tertentu dipanggil

Seluruh ide profiling mendapatkan gambaran umum yang bagus dari sistem untuk menentukan di mana optimisasi dapat dibuat. Jika Anda tahu fungsi tertentu disebut 20 kali lebih banyak daripada fungsi yang disebut paling 2, Anda tahu kapan harus memfokuskan upaya pengoptimalan Anda.

Ini juga menunjukkan Anda di mana tidak untuk menghabiskan waktumu. Anda tidak ingin menghabiskan satu hari untuk mengoptimalkan fungsi yang hanya dipanggil satu kali per jam. Anda ingin memfokuskan waktu Anda untuk mengoptimalkan fungsi-fungsi yang dipanggil beberapa kali per detik.

Logging, dalam pemahaman saya, hanya melacak apa yang telah disebut (tetapi tanpa metadata rinci yang terkait dengan setiap panggilan).

Memrofil perpustakaan seperti Rational Quantify bekerja dengan mengajarkan kode untuk mengumpulkan statistik saat sedang berjalan. Ini akan memiliki dampak kinerja implisit, tetapi akan relatif di seluruh sistem.


3
2017-10-28 03:37



Profiling digunakan untuk menentukan efisiensi waktu berjalan dari suatu program. Ini dapat digunakan untuk mengukur penggunaan memori atau penggunaan CPU. Anda dapat menggunakannya untuk mengoptimalkan kode Anda.

Logging di sisi lain adalah fungsi audit. Anda ingin melihat apa yang dilakukan program ketika sedang berjalan. Ini lebih digunakan untuk debugging daripada kinerja.


2
2017-10-28 03:34



Saya melihat profil sebagai pengukuran kinerja, dan Anda tidak harus membuat profil setiap bagian kode berjalan, terkadang lebih baik untuk menargetkan area tertentu.

Logging adalah menyimpan informasi untuk digunakan nanti, informasi yang mungkin berhubungan dengan profil tetapi tidak harus. Mungkin saja untuk mencatat apa yang terjadi.

Semua hal profiling yang pernah saya gunakan pada dasarnya memungkinkan Anda untuk menyimpan waktu mulai dan waktu akhir untuk 'transaksi' dan kemudian memanipulasi data untuk melihat apa yang mengambil waktu paling banyak.


1
2017-10-28 03:32



Logging merekam apa yang dilakukan untuk tujuan audit atau pemecahan masalah. Profil, menurut saya, adalah teknik untuk mengukur kinerja. Pembuatan profil dapat dilakukan dengan mencatat metrik kinerja, atau dapat dilakukan dengan menggunakan alat khusus atau utilitas untuk memeriksa keadaan sistem saat sedang berjalan.


1
2017-10-28 03:32



Pernyataan log biasanya ditulis dalam kode sumber itu sendiri, sedangkan dengan profiling Anda dapat memodifikasi kode setelah itu dikompilasi dan diinstrumentasi lalu dan hanya untuk sesi pembuatan profil (yaitu, tidak ada kode profil di dalamnya apa saja verison dari build itu sendiri.) dan mengukur kinerja secara real-time atau bisa juga sampel sehingga dapat melacak kinerja dengan cara yang kurang rinci tetapi kurang intrusif.


1
2017-10-28 03:34



Logging memberi tahu Anda bagaimana caranya banyak pertanyaan yang Anda posting ke stackoverflow.

Profiling memberi tahu Anda bagaimana caranya panjang diperlukan untuk memposting setiap pertanyaan, dan bagaimana caranya banyak hari kerja Anda yang Anda habiskan di sini.


1
2017-10-28 11:05