2010-12-01 21 views
14

Günlük yerel bir kod ile Android'de oldukça büyük bir yazılım geliştiriyorum, şimdi çalışıyor ama bazı performans sorunları yaşıyor.Android yazılım gerçek Android telefonlarda NDK yerli c kodu profilleme

Birkaç gerçek android telefonda CPU döngüleri, bellek kullanımı, vb. Için yazılımın her modülünü (işlev çağrısı) profilleyebileceğimi umuyorum. Bunu yapmak için basit bir kütüphane var mı?

Oprofile kullanan insanlar görüyorum, Benim durumum için bir overkill gibi görünüyor, çünkü sistem bir vahşi profiler ve çekirdek ve sistem imajını yeniden oluşturuyor.

Uygulamamın tam kaynak koduna sahip olduğumdan, gerçekten ihtiyacım olan tek şey, uygulama birkaç test vakası çalıştıran bazı profiller yapmak için koduma yerleştirebileceğim basit bir c kitaplığı.

BTW, bunu yapmanın Linux yolu nedir?

+0

Eğer bir hata ayıklayıcı altında uygulamayı çalıştırabilir miyim /mnt/sdcard/gmon.out? Duraklatmayı manuel olarak kesebiliyor musunuz? Daha sonra performans sorunlarını bulmak için rastgele-duraklatma yöntemini kullanabilirsiniz. http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux/378024#378024 –

+0

NDK hata ayıklayıcı desteği yalnızca froyo'da kullanılabilir, ayrıca sistemik kullanabilirim Eğer profili farklı telefonlarda çalıştırmak istersem. – lennydizzy

+1

** ndk-gdb ** kullanılabilir ve ctrl-C olduğunda size bir yığın izi verebilmelidir. Bu, performansı ölçmek için tasarlanmamıştır. Performansı iyileştirmek için optimize edilecek kodu bulması amaçlanmıştır. Ölçme problem bulamamaktadır, ancak problemi bulmak ve düzeltmek, platformdan bağımsız olarak ölçümü iyileştirmektedir. (Bunun insanların genelde böyle düşünmediklerini biliyorum, ancak kodun daha hızlı çalışmasını sağlayabilirsiniz.) –

cevap

4

Android-ndk-profiler ile oldukça iyi sonuçlar aldım.

http://code.google.com/p/android-ndk-profiler/

Çıkışlar

+0

Maalesef alabileceği kadar faydasız. Tam olarak örnekleme olmaksızın oldukça kırılgan olmanın yanı sıra (yalnızca gprof ve gcc'nin bazı sürümleriyle çalışır) [bilgi zaten temsilci değildir] (http://stackoverflow.com/a/1779343/201725). –