2010-12-01 7 views
14

Je développe un logiciel assez grand sur Android avec un code natif de journal, il fonctionne maintenant, mais ayant des problèmes de performance. J'espère pouvoir profiler chaque module (appel de fonction) du logiciel pour les cycles du processeur, l'utilisation de la mémoire, etc., sur plusieurs vrais téléphones android. Y a-t-il une bibliothèque de c simple pour faire cela?Logiciel Android NDK natif c code profilage sur les téléphones Android réels

Je vois des gens qui utilisent oprofile, Cela semble être un surclassement pour mon cas puisque c'est un profileur sauvage du système, et cela nécessite de reconstruire le noyau et l'image du système. Comme j'ai le code source complet de mon application, tout ce dont j'ai vraiment besoin est d'une simple bibliothèque c que je peux intégrer dans mon code pour faire du profilage pendant que l'application exécute plusieurs cas de test.

BTW, quelle est la manière Linux de faire cela?

+0

Pouvez-vous exécuter l'application sous un débogueur? Que vous pouvez interrompre manuellement de pause? Ensuite, vous pouvez utiliser la méthode random-pause pour trouver les problèmes de performance. http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux/378024#378024 –

+0

La prise en charge du débogueur NDK est disponible uniquement dans froyo, en plus je pourrais utiliser un systémique Si je veux lancer le profilage sur plusieurs téléphones différents. – lennydizzy

+1

** ndk-gdb ** est disponible, et devrait être capable de vous donner une trace de pile quand vous le ctrl-C it. Ceci n'est pas destiné à mesurer la performance. Il est destiné à trouver le code à optimiser afin d'améliorer les performances. La mesure ne trouve pas de problèmes, mais trouver et corriger les problèmes améliore la mesure, quelle que soit la plate-forme. (Je sais que ce n'est pas ce que les gens pensent généralement, mais c'est comme ça que le code fonctionne vite.) –

Répondre

4

J'ai eu des résultats assez décents avec android-ndk-profiler.

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

Sorties /mnt/sdcard/gmon.out

+0

Malheureusement, c'est à peu près aussi inutile que possible. En plus d'être plutôt fragile (ne fonctionne qu'avec certaines versions de gprof et gcc etc.), sans échantillonnage full stack [l'information n'est de toute façon pas représentative] (http://stackoverflow.com/a/1779343/201725). –

Questions connexes