Android uygulamamın profilini nasıl oluşturabilirim? [kapalı]


93

Android uygulamamda darboğazların nerede olduğunu bulmam gerekiyor.

Hangi profilleme araçlarını veya tekniklerini kullanabilirim?


Android'e aşina değilim. Uygulamayı, kesintiye uğratabileceğiniz bir hata ayıklayıcı altında çalıştırabilir misiniz? Öyleyse, bu yöntem işe
yarar

Mmm, ilginç. Biraz emek yoğun, ancak daha göze batan performans sorunlarını tespit etmek için potansiyel olarak yararlı. Teşekkürler.
teedyay

Böyle düşünebildiğinizi anlıyorum: stackoverflow.com/questions/2624667/…
Mike Dunlavey

Günümüzde Eclipse içinde güzel profiller oluşturabilirsiniz. TraceView vb .'nin bağımsız / manuel olarak başlatılmasını unutun. Bununla ilgili daha fazla ayrıntı içeren bir blog makalesi yazmayı umuyorum. Daha fazla ayrıntıya ihtiyacın olursa bana mesaj at.
KarolDepka

2
TraceView veya DDMS'den daha iyi bir şey olduğunu söylüyorsunuz. Bu ne?
Peri Hartman

Yanıtlar:


37

Traceview'ı kullanabilirsiniz. İdeal olmaktan uzak ama işe yarıyor. Bu makale nasıl kullanılacağını açıklamaktadır.


2
Bunu çalıştırdığımda komut satırı sürümünün kullanımdan kaldırıldığını ve ardından çıktığını söylüyor. Yeni yöntem nedir?
gonzobrains


11

Neyi test edeceğinize bağlı.

Android için uygulamalar geliştirmeniz durumunda TimingLogger sınıfını denemelisiniz. TimingLogger yardımcı sınıfının kullanımını açıklayan bu makaleye bir göz atın .

JMeter çok iyi bir araç ve Android için de bir eklenti var .

Harici araçları kullanmak istemiyorsanız, ancak geçen zamanı ölçmek için çok standart bir yol kullanıyorsanız, System.nanoTime () kullanmalısınız. CurrentTimeMillis'i kullanmamalısınız, çünkü hiçbir bilgisayarın saati mükemmel olmadığından (hepsinin ara sıra düzeltilmesi gerekir) duvar saati zamanını ölçer ve sistem saatinde sürekli olarak küçük düzeltmeler yapan bir süreç vardır. Artık ikinci düzeltmeden bahsetmiyorum bile.

CurrentTimeMillis sıklıkla kullanılsa da, geçen süreyi ve zamanlamayı ölçmek yine de yanlıştır. Her neyse, çağrı biraz zaman aldığından, çok çok küçük aralıkları doğru şekilde zamanlamayı beklememelisiniz. Ancak bu, Android ile çalışırken bir sorun olmamalı.

Sana bir örnek göstereceğim:

long startTime = System.nanoTime();

// run/call the method

long endTime = System.nanoTime();
long diff = endTime - startTime ;
System.out.println("Elapsed milliseconds: " + diff /1000000);

Bu ücretsiz kitaplığa da bir göz atabilirsiniz: http://jetm.void.fm/ .

Ayrıca JMeter için öğretici de bulabilirsiniz .


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.