Apa Beberapa Profiler .NET Bagus?


374

Profiler apa yang Anda gunakan saat bekerja dengan program .net, dan yang mana yang akan Anda rekomendasikan secara khusus?

Jawaban:


285

Saya telah menggunakan JetBrains dotTrace dan Redgate ANTS secara ekstensif. Mereka cukup mirip dalam fitur dan harga. Keduanya menawarkan profil kinerja yang berguna dan profil memori yang cukup mendasar.

dotTrace terintegrasi dengan Resharper, yang sangat nyaman, karena Anda dapat membuat profil kinerja unit test dengan satu klik dari IDE. Namun, dotTrace sepertinya memberikan hasil palsu (mis. Mengatakan bahwa suatu metode membutuhkan waktu beberapa tahun untuk menjalankannya)

Saya lebih suka cara SEMUT menyajikan hasil profil. Ini menunjukkan kepada Anda kode sumber dan di sebelah kiri setiap baris memberitahu Anda berapa lama untuk dijalankan. dotTrace hanya memiliki tampilan hierarki.

Profiler EQATEC cukup mendasar dan mengharuskan Anda untuk mengkompilasi versi khusus instrumen majelis Anda yang kemudian dapat dijalankan di profiler EQATEC. Namun, gratis.

Secara keseluruhan saya lebih suka SEMUT untuk profil kinerja, meskipun jika Anda menggunakan Resharper maka integrasi dotTrace adalah fitur pembunuh dan berarti itu mengalahkan SEMUT dalam kegunaan.

Microsoft CLR Profiler gratis ( .Net framework 2.0 / .Net Framework 4.0 ) adalah semua yang Anda butuhkan untuk profil memori NET.

Pembaruan 2011:

The Scitech memori profiler memiliki cukup UI dasar tetapi banyak informasi yang berguna, termasuk beberapa informasi pada memori unmanaged yang dotTrace dan SEMUT kekurangan - Anda mungkin menemukan itu berguna jika Anda melakukan COM Interop, tapi saya belum menemukan profiler yang membuat COM masalah memori mudah didiagnosis - Anda biasanya harus keluar windbg.exe.

Profiler ANTS telah muncul secara cepat dalam beberapa tahun terakhir, dan memory profilernya memiliki beberapa fitur yang sangat berguna yang sekarang mendorongnya di depan dotTrace sebagai paket dalam perkiraan saya. Saya cukup beruntung memiliki lisensi untuk keduanya, tetapi jika Anda akan membeli satu. Profiler bersih untuk kinerja dan memori, buat itu SEMUT.


5
Profiler di Visual Studio juga sangat mudah digunakan, Visual Studio 2010 dalam Beta dan karenanya gratis juga. Ada beberapa peningkatan di 2010 untuk melihat pertikaian dan konkurensi. coba saja ...
Rick

15
@ Rick Sayangnya profiler dari Visual Studio tidak hadir dalam Professional Edition ...
Drake

Saya sangat tidak setuju tentang profiler CLR menjadi semua yang Anda butuhkan untuk profil memori. NET, meskipun mungkin benar jika Anda tidak menempatkan nilai pada waktu Anda. Lihat jawaban saya di bawah ini untuk ringkasan pasangan memori terbaik - mereka akan membantu Anda menemukan kebocoran memori dan masalah potensial jauh lebih cepat.
Ben Robbins

1
Rilis profiler EQUATEC saat ini tidak gratis lagi.
David Schmitt

1
Sepertinya EQATEC Profiler telah menjadi gratis untuk .NET (kerangka penuh) lagi
soren.enemaerke

88

Yang lain telah membahas profil kinerja, tetapi berkaitan dengan profil memori saya sedang mengevaluasi Scitech .NET Memory Profiler 3.1 dan ANTS Memory Profiler 5.1 (versi saat ini pada September 2009). Saya mencoba JetBrains satu atau dua tahun yang lalu dan itu tidak sebagus SEMUT (untuk profil memori) jadi saya tidak repot-repot kali ini. Dari membaca situs web sepertinya tidak memiliki fitur profil memori yang sama seperti dua lainnya.

Baik ANTS dan profil memori Scitech memiliki fitur yang tidak dimiliki oleh yang lain, jadi yang terbaik akan tergantung pada preferensi Anda. Secara umum, yang Scitech memberikan informasi yang lebih rinci sementara yang SEMUT sangat luar biasa dalam mengidentifikasi objek bocor. Secara keseluruhan, saya lebih suka yang SEMUT karena sangat cepat mengidentifikasi kemungkinan kebocoran.

Berikut adalah pro dan kontra masing-masing dari pengalaman saya:

Fitur Umum ANTS dan Scitech .NET Memory Profiler

  • Fitur analisis real-time
  • Video cara kerja yang luar biasa di situs web mereka
  • Mudah digunakan
  • Performan yang wajar (jelas lebih lambat daripada tanpa profiler terpasang, tetapi tidak terlalu membuat Anda frustrasi)
  • Tampilkan contoh benda bocor
  • Pada dasarnya mereka berdua melakukan pekerjaan dengan cukup baik

SEMUT

  • Filter sekali klik untuk menemukan kebocoran umum termasuk: objek tetap hidup hanya oleh penangan acara, objek yang dibuang tetapi masih hidup dan objek yang hanya disimpan hidup-hidup dengan referensi dari objek yang dibuang. Ini mungkin fitur pembunuh SEMUT - menemukan kebocoran sangat cepat karena hal ini. Dalam pengalaman saya, sebagian besar kebocoran disebabkan oleh event handler yang tidak dilepas dan SEMUT hanya membawa Anda langsung ke objek-objek ini. Luar biasa.
  • Grafik retensi objek. Meskipun info yang sama tersedia di Scitech, jauh lebih mudah untuk ditafsirkan dalam SEMUT.
  • Memperlihatkan ukuran dengan anak-anak selain ukuran objek itu sendiri (tetapi hanya ketika instance dipilih sayangnya, tidak dalam daftar kelas keseluruhan).
  • Integrasi yang lebih baik ke Visual Studio (klik kanan pada grafik untuk melompat ke file)

Scitech .NET Memory Profiler

  • Menampilkan jejak tumpukan saat objek dialokasikan. Ini benar - benar berguna untuk objek yang dialokasikan di banyak tempat berbeda. Dengan SEMUT sulit untuk menentukan dengan tepat di mana objek yang bocor dibuat.
  • Memperlihatkan jumlah benda sekali pakai yang tidak dibuang. Meskipun bukan indikasi kebocoran, ini mengidentifikasi peluang untuk memperbaiki masalah ini dan meningkatkan kinerja aplikasi Anda sebagai akibat dari pengumpulan sampah yang lebih cepat.
  • Opsi pemfilteran yang lebih terperinci (beberapa kolom dapat difilter secara independen).
  • Menyajikan info tentang total objek yang dibuat (termasuk sampah yang dikumpulkan). SEMUT hanya menampilkan statistik objek 'langsung'. Ini membuatnya lebih mudah untuk menganalisis dan mengatur kinerja aplikasi secara keseluruhan (mis. Mengidentifikasi di mana banyak objek yang tidak perlu dibuat tidak perlu bocor).

Sebagai ringkasan, saya pikir SEMUT membantu Anda menemukan apa yang bocor lebih cepat sementara Scitech memberikan sedikit lebih detail tentang kinerja memori aplikasi keseluruhan Anda dan objek individual setelah Anda tahu apa yang harus dilihat (mis. Tumpukan jejak pada kreasi). Jika tumpukan jejak dan pelacakan benda sekali pakai yang tidak diinginkan ditambahkan ke SEMUT, saya tidak akan melihat perlunya menggunakan yang lain.


Versi 4.0 .NET Memory Profiler (sekarang dalam pratinjau) sekarang memiliki tampilan grafik. Ini adalah satu-satunya fitur yang saya sukai di profil SEMUT yang tidak dimiliki Scitech (dalam 3.1 / 3.5).
cplotts

45

Saya baru-baru ini menemukan EQATEC Profiler http://www.eqatec.com/tools/profiler . Ini berfungsi dengan sebagian besar versi .NET dan pada banyak platform. Mudah digunakan dan sebagian gratis, bahkan untuk penggunaan komersial.


Gagal pada panggilan ekor juga :( Bug yang dilaporkan.
leppie

Yang ini hanya gratis untuk penggunaan non-komersial.
Jon Seigel

7
Benar-benar gratis di Agustus '08 ketika TrolleFar menulis jawabannya. Sekarang, seperti yang dikatakan Jon, itu hanya gratis untuk penggunaan non-komersial.
Richard Flamsholt

8
Ternyata mereka mengubah ketentuan lisensi lagi. Sebagian gratis untuk penggunaan komersial lagi.
TrolleFar

Pada FEB2011 .NET edisi normal untuk diri / komersial adalah gratis. Alat ini bagus karena berfungsi pada model klien / server dan dapat membuat profil / by-pass batasan berulang (mis. Asli-> COM-> NET-> COM-> NET dapat diprofilkan). UI agak mengerikan :-)

31

[ Pengungkapan Penuh ]

Meskipun belum memiliki fitur lengkap seperti beberapa profiler memori .NET lainnya yang tercantum di sini, ada entri baru di pasar yang disebut JustTrace . Ini dibuat oleh Telerik dan tujuan utamanya adalah untuk membuat penelusuran / pembuatan profil lebih mudah dan lebih cepat dilakukan untuk semua jenis aplikasi (web / Silverlight / desktop).

Jika Anda pernah menemukan profil dan optimasi yang mengintimidasi atau lambat dengan alat lain, maka JustTrace mungkin layak untuk dilihat.


12
Ketika saya pergi untuk mengunduhnya dan mencobanya, Telerik ingin saya untuk "mendaftar" dan "membuat akun." Dan semua tombol berlangganan buletin dicentang secara default. Saya akan senang untuk mencoba JustTrace, tetapi tidak jika Telerik membuatnya menjadi sulit.
Ryan Lundy

1
Terima kasih telah mencoba, Kyralessa. Kami tahu proses itu dapat ditingkatkan. Kami sedang mengerjakannya sekarang. Kami berharap dapat menghilangkan rintangan itu segera. Untuk saat ini, hapus centang saja pada kotak dan dalam 2 menit Anda dapat memiliki akun dan unduh JustTrace gratis. Maaf atas masalah jangka pendek. -T
Todd

9
poskan kembali dan beri tahu saya kapan saya dapat mengunduh tanpa membuat akun, dan saya akan mencobanya.
Ryan Lundy

4
Pembaruan: Hari ini saya dapat mengunduh menggunakan tautan dalam jawaban tanpa harus membuat akun.
Ryan Lundy

25

Jangan lupa nProf - profiler yang bagus dan freeware.


3
Sepertinya agak ditinggalkan ... hanya rilis alpha dari 2006 :-(
Mauricio Scheffer

2
Bekerja dengan baik untuk saya. Sekarang proyek Google Code. Telah rilis pada Juli 2009.
User1

19
Halaman nProf sekarang menyatakan: NProf tidak dikembangkan secara aktif lagi. Jika Anda mencari open source. Profiler NET, lihat SlimTune ( code.google.com/p/slimtune )
Richard Ev


12

Profil Semut . Saya belum pernah menggunakan banyak, tetapi saya tidak benar-benar memiliki keluhan tentang SEMUT. Visualisasi ini sangat membantu.




9

Saya telah bekerja dengan JetBrains dotTrace untuk WinForms dan Aplikasi Konsol (belum diuji di ASP.net), dan bekerja dengan cukup baik:

Mereka baru-baru ini juga menambahkan "Lisensi Pribadi" yang jauh lebih murah daripada lisensi perusahaan. Namun, jika ada orang lain yang tahu yang lebih murah atau bahkan gratis, saya ingin mendengar juga :-)


7

Jangan lupa profiler memori .net scitech yang mengagumkan

Ini bagus untuk melacak mengapa aplikasi .net Anda kehabisan memori.


1
Alat yang sangat bagus. Mudah digunakan dan memungkinkan Anda menavigasi grafik objek Anda. Saya terutama menyukai pelacakan memori 'realtime'. Ini menunjukkan kepada Anda bagaimana jumlah objek Anda berkembang selama runtime aplikasi.
lowglider

5

Saya ingin menambahkan bahwa kemampuan dotTrace untuk memori berbeda dan sesi penelusuran kinerja sangat berharga (ANTS mungkin juga memiliki fitur memori berbeda, tetapi saya tidak melihat perbedaan kinerja).

Mampu menjalankan sesi pembuatan profil sebelum dan sesudah perbaikan atau peningkatan bug, kemudian membandingkan hasilnya sangat berharga, terutama dengan aplikasi .NET (seperti dalam kasus saya) yang sangat besar di mana kinerja tidak pernah menjadi prioritas dan di mana menemukan kemacetan bisa menjadi SANGAT membosankan. Melakukan perbedaan sebelum dan sesudah memungkinkan Anda untuk melihat perubahan jumlah panggilan untuk setiap metode dan perubahan durasi untuk setiap metode .

Ini bermanfaat tidak hanya selama perubahan kode, tetapi juga jika Anda memiliki aplikasi yang menggunakan basis data yang berbeda, misalnya, untuk setiap klien / pelanggan. Jika satu pelanggan mengeluh kelambatan, Anda dapat menjalankan sesi profil menggunakan basis data mereka dan membandingkan hasilnya dengan basis data "cepat" untuk menentukan operasi mana yang berkontribusi terhadap kelambatan. Tentu saja ada banyak alat kinerja sisi-database, tetapi kadang-kadang saya benar-benar membantu untuk melihat metrik kinerja dari sisi aplikasi (karena itu lebih dekat dengan apa yang sebenarnya dilihat pengguna).

Intinya: dotTrace berfungsi dengan baik, dan perbedaannya sangat berharga.


4

AQTime masuk akal, tetapi memiliki sedikit kurva pembelajaran dan tidak mudah digunakan seperti yang dibangun di dalam Team Suite



3

Rilis SharpDevelop saat ini (3.1.1) memiliki profiler terintegrasi yang bagus. Ini cukup cepat, dan terintegrasi dengan sangat baik ke dalam SharpDevelop IDE dan NUnit runner-nya. Hasil ditampilkan dalam gaya Pohon / Daftar yang fleksibel (gunakan LINQ untuk membuat pilihan Anda sendiri). Menggandakan metode yang ditampilkan melompat langsung ke kode sumber.


2

Saya telah bekerja dengan profiler RedGate di masa lalu. Melakukan pekerjaan untuk saya.


2

Belum mencobanya sendiri, tapi mungkin dotTrace ? Aplikasi ReSharper mereka tentu saja bagus. Mungkin dotTrace juga :)


1
Saya telah menggunakan dotTrace dan dapat merekomendasikannya.
Jon Skeet

2

Saya ragu bahwa profiler yang datang dengan Visual Studio Team System adalah profiler terbaik, tetapi saya telah menemukan itu cukup baik pada banyak kesempatan. Apa yang Anda butuhkan secara spesifik di luar apa yang ditawarkan VS?

EDIT: Sayangnya itu hanya tersedia dalam Sistem Tim VS, tetapi jika Anda memiliki akses ke sana itu perlu diperiksa.


1
Saya berbicara tentang satu di VS2008, tetapi mungkin tidak tersedia di semua versi (saya menggunakan VSTS). Dari video PDC2008, sepertinya profiler akan meningkat banyak di VS2010.
Brian Rasmussen

1
Profiler itu hanya tersedia dengan versi Sistem Tim Visual Studio.
Chris Brandsma

Sistem Tim Visual Studio (Edisi Pengembang) memiliki profiler. Lihat < microsoft.com/visualstudio/en-us/products/teamsystem/… >.
gix

Visual Studio memiliki profiler sejak VS 2005. Ini hanya tersedia dengan Sistem Tim. Faktanya, itulah alasan saya menggunakan sistem tim (di tempat kerja saya memiliki profesional). Ini adalah profiler yang sangat bagus, menurut saya.
configurator

Ini adalah profiler yang bagus, tetapi tidak cukup untuk standar versi baru SEMUT.
mqp

2

Versi terbaru dari profiler memori ANTS (saya pikir itu 5) hanya batu !!! Saya menghantui kebocoran menggunakan WinDbg dan SOS karena terbukti cara terbaik sebelumnya, kemudian saya mencoba SEMUT dan saya mendapatkannya dalam beberapa menit. Benar-benar software yang luar biasa.


2

Saya ingin menambahkan yourkit java dan .net profiler, saya menyukainya untuk Java, belum mencoba versi .NET.


1

Sayangnya sebagian besar profiler yang saya coba gagal ketika digunakan dengan panggilan ekor, terutama SEMUT. Saya akhirnya menulis sendiri. Ada implementasi sederhana pada CodeProject yang dapat Anda gunakan sebagai basis.



1

Saya harus membawa alat yang luar biasa untuk pemberitahuan Anda yang telah saya gunakan beberapa waktu lalu. AVICode Interceptor Studio . Di perusahaan saya sebelumnya, kami menggunakan alat luar biasa ini untuk membuat profil aplikasi web ( Ini seharusnya menjadi aplikasi web tunggal terbesar di dunia dan proyek TI sipil terbesar yang pernah dilakukan ). Tim kinerja melakukan keajaiban dengan bantuan alat luar biasa ini. Sangat sulit untuk mengkonfigurasinya, tetapi itu adalah aktivitas satu kali dan saya akan mengatakan itu layak untuk dilakukan. Periksa halaman ini untuk detailnya.

Terima kasih, James


1

Bagi saya, SpeedTrace adalah alat terbaik di pasar karena tidak hanya membantu Anda menemukan hambatan dalam aplikasi Anda. Ini juga membantu Anda dalam skenario pemecahan masalah untuk mencari tahu mengapa aplikasi Anda macet, setup Anda tidak menginstal, aplikasi Anda menutup, kinerja aplikasi Anda kadang-kadang buruk tergantung pada input data, misalnya untuk mengidentifikasi transaksi db lambat.


1

Saya telah menguji JustTrace Telerik baru-baru ini dan meskipun jauh dari produk jadi, orang-orang akan ke arah yang benar.


1

Jika Perizinan adalah masalah Anda bisa mencoba WINDBG untuk profil memori


1

Profiler True Time NuMega hidup di DevPartner Studio oleh Micro Focus. Ini memberikan detail level jalur dan metode untuk .NET apps yang hanya membutuhkan PDB, tidak diperlukan sumber (tetapi ini membantu.) Ia dapat membedakan antara rutinitas yang berat secara algoritmik dibandingkan dengan yang lama menggunakan I / O dengan menggunakan pengatur waktu mode kernel per thread kernel. Versi 10.5 dikirimkan dengan dukungan 64-proses baru pada 4 Februari 2011. Plug tidak tahu malu: Saya bekerja pada lini produk DevPartner. Tindak lanjuti di http://www.DevPartner.com untuk berita peluncuran 10.5.

Penafian: Saya Manajer Produk untuk DevPartner di Micro Focus.


selamat datang di SO. Anda perlu mengungkapkan hubungan apa pun dengan DevPartner atau Anda akan dianggap sebagai spammer dan ditangani demikian. Saya melihat Anda telah menjawab sejumlah pertanyaan tentang pembuatan profil ...
John Saunders

0

Saya telah menemukan banyak masalah di aplikasi C # besar menggunakan ini .

Biasanya masalah terjadi selama startup atau shutdown ketika plugins sedang dimuat, dan struktur data besar sedang dibuat, dihancurkan, serial, atau deserialized. Seringkali mereka dibuat dan diinisialisasi lebih dari sekali, dan penangan perubahan ditambahkan beberapa kali, semakin memperparah masalah.

Dalam kasus seperti ini, program bisa sangat lamban sehingga hanya 2 sampel yang cukup untuk menunjukkan metode / fungsi / situs panggilan properti yang bersalah.


0

Kami memilih YourKit Profiler untuk .NET di perusahaan saya karena nilai terbaik (harga vs. fitur). Untuk perusahaan kecil yang ingin memiliki lisensi fleksibel (lisensi mengambang) itu adalah pilihan yang sempurna - ANTS adalah liontin kursi pengembang pada saat itu.

Juga, itu memberi kami kemampuan untuk melampirkan ke proses yang sedang berjalan yang tidak mungkin dengan dotTrace. Berhati-hatilah meskipun melampirkan bukanlah pilihan terbaik karena semuanya. NET akan melambat, tetapi ini adalah satu-satunya cara untuk profil. Aplikasi NET dimulai oleh proses lain. Dari segi fitur, SEMUT dan dotTrace lebih baik - tetapi pada akhirnya YourKit cukup baik.


Mulai dari Januari 2012, YourKit telah menaikkan harga untuk profiler YourKit. Karenanya, keuntungan harga mungkin tidak lagi valid.

0

Jika Anda menggunakan ASP.NET MVC, Anda dapat mencoba MVCMiniProfiler (http://benjii.me/2011/07/using-the-mvc-mini-profiler-with-entity-framework/)

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.