Kodunuzun hangi bölümlerinin en sık çalıştırıldığını nasıl görebilirim?


11

Binlerce kaynak kod satırında hangi kodun en sık çalıştırıldığını ve en uzun süreyi aldığını görmek istiyorum. Bunun amacı optimizasyon olacaktır.

Kodun hangi bölümlerinin en sık çalıştırıldığını görebilmek, optimizasyon için önemlidir, çünkü bu parçalar hızlanmak için odaklanmam gereken yerlerdir. Aynı zamanda, bazı kodlar çok sık çalıştırılır, ancak neredeyse hiç zaman almaz, bu nedenle hangi kodun en uzun sürdüğünü görmek de önemlidir.

Her iki dünyanın en iyisi, çalıştırılan zamanların TÜM dahil olmak üzere bir kod parçası süresinin miktarını toplayan bir program olacağını tahmin ediyorum (bunun için en genel olarak kodunuzu yavaşlatan ne olduğunu bulmak). Bunun için bir çeşit araç var mı?


İşletim sistemi veya programlama dili tercihiniz var mı?
Mawg diyor Monica

Yanıtlar:


15

Aradığınız şey profil oluşturmaktır :

Yazılım mühendisliğinde profilleme ("program profili oluşturma", "yazılım profili oluşturma"), örneğin bir programın alanını (hafızasını) veya zaman karmaşıklığını, belirli talimatların kullanımını veya sıklığı ölçen ve işlev çağrılarının süresi. Profil oluşturma bilgilerinin en yaygın kullanımı program optimizasyonuna yardımcı olmaktır.

Bu tür birkaç uygulama vardır. Bazen bunlar IDE'nin içine yerleştirilir. Netbeans ide, bir profil oluşturucuya sahip böyle bir araçtır . resim açıklamasını buraya girin

Böyle bir araç görsel vm'dir .

resim açıklamasını buraya girin

Profilciler farklı şekillerde çalışabilir - ve bu farklılıkların farkında olunmalıdır. Bir yaklaşım, çalışan her bir iş parçacığının anlık görüntüsünü almak ve her iş parçacığı için şu anda hangi yöntemlerin çağrıldığını görmek için her saniyedir. Bu, dışarıdakilerin bir örneğini kullanır.

Diğer yaklaşım, başka bir uygulamaya başlama ve bitiş zamanını bildirmek için java bayt kodunu kullanmaktır.

Bir profiler yazmak, yetenekli bir java için çok zor değildir. IBM'in kendi profilinizi yazma konusunda bir makalesi vardır (kaynak koduyla!). Bu, Java Interactive Profiler'a dayanmaktadır .

Orada çok sayıda profiler var - hem ücretsiz hem de ticari (belirli bir yöntem beklenen çalışma süresini aştığında size geri bildirimde bulunabilecek (e-posta veya başka bir bildirim) JVM örneklerini çalıştırmak için bağlanmış bir profil oluşturucuya ne dersiniz? Web istekleri çok uzun sürdüğünde rapor veren bir programdır - bu istek için geçmiş profil daha sonra incelenmek üzere saklansın mı?). Onları bulmaya ve oradan gitmeye başlamak için ne aradığınızı bilmelisiniz.

Profili oluşturduktan sonra , profil oluşturma sonuçlarını yorumlamaya başlıyorsunuz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.