Android uygulamamda darboğazların nerede olduğunu bulmam gerekiyor.
Hangi profilleme araçlarını veya tekniklerini kullanabilirim?
Android uygulamamda darboğazların nerede olduğunu bulmam gerekiyor.
Hangi profilleme araçlarını veya tekniklerini kullanabilirim?
Yanıtlar:
Traceview'ı kullanabilirsiniz. İdeal olmaktan uzak ama işe yarıyor. Bu makale nasıl kullanılacağını açıklamaktadır.
DDMS, Android için en iyisidir. Varsayılan olarak ADT eklentisine dahil edilir.
Ayrıntılı örnek içeren bu belge, DDMS ile başa çıkmanıza yardımcı olacaktır.
Bellek Analizi için Eclipse MAT'ı deneyin
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 .
Http://developer.android.com/training/articles/perf-tips.html'de önerilen diğer bir araç da Caliper: https://code.google.com/p/caliper/ . (Kullanmadım, bu yüzden onun hakkında fazla bir bilgim yok.)