Question

Quels outils connaissez-vous, autres que ceux de Visual Studio, pour analyser les goulots d'étranglement des performances dans une application Windows CE / Mobile? Je recherche quelque chose comme AQTime pour CE / Mobile, permettant de profiler les applications C / C ++ compilées en code natif.

Était-ce utile?

La solution

Je n'ai trouvé aucun outil de ce type pour WindowsMobile pour le développement natif.

Le plus proche que j'ai trouvé est le jeu d'outils EnTrek (CodeSnitch / ProcMan), mais ce ne sont pas vraiment des outils de profilage. http://www.entrek.com/products.htm

Ce que nous avons fait est de créer notre propre support de profilage dans nos propres produits à l'aide de Vistual Studio "/ callcap". commutateur pour VC ++. En utilisant ce commutateur, vous pouvez créer une bibliothèque de profilage qui extrait les temps et les comptages, comme vous le souhaitez. La plupart du temps, cela fonctionne bien pour nous, mais parfois, les frais généraux de ces fonctions de raccordement peuvent être trop lourds et les résultats de synchronisation peuvent fausser les résultats de chronométrage dans des zones comportant un nombre considérable d'appels de fonctions.

À partir des documents MSDN:

  

L'option / callcap provoque la   compilateur pour insérer des appels au profilage   crochets au début et à la fin de chaque   une fonction.

     

Vous devez compiler des hameçons de profilage   sans le commutateur callcap. Si vous   compiler les fonctions de crochet de profilage   avec le commutateur callcap, les fonctions   effectuera des appels récursifs infinis   à eux-mêmes.

     

L'exemple de code suivant,   Callcaphooks.c, montre un crochet de profilage   fonction, _CAP_Enter_Function, pour   compilation sans callcap.

// File: callcaphooks.c

#include <stdio.h>
int main();

void _CAP_Enter_Function(void *p) 
{
    if (p != main) 
        printf("Enter function   (at address %p) at %d\n", 
            p, GetTickCount());
        return;
}
void _CAP_Exit_Function(void *p) 
{
    if (p != main) 
        printf("Leaving function (at address %p) at %d\n", 
            p, GetTickCount());
    return;
}

Autres conseils

Windows CE prend en charge le profileur d'appel distant (si le fabricant OEM l'a ajouté). soutien pour cela) hors de la boîte. Je crois que les images WinMo sont généralement prises en charge dans les images. Pour CE, vous devez connaître le jeu de variables d’environnement IMAGEPROFILER (utilisez les propriétés du projet).

Ce qui n'est pas clair dans MSDN, c'est comment instrumenter une application qui n'est pas construite avec Platform Builder, mais c'est en fait assez simple. Vous devez ajouter / callcap swith à la ligne de commande du compilateur et ajouter cecap.lib à vos paramètres d’éditeur de liens.

Bien sûr, vous aurez besoin d’un outil pour capturer et afficher les données du profileur. Pour cela, vous pouvez utiliser la version d'évaluation de Platform Builder ( 5.0 ou 6.0 ) (l’évaluation est gratuite) ou eVC 4.0 (également gratuit).

Pour plus d'informations sur l'utilisation du profileur, Sue Loh, de l'équipe principale de CE, a blogué un peu à ce sujet.

J'ai écrit un profileur de graphes d'appels pour Windows Mobile. Il est actuellement (à compter de janvier 2010) en phase bêta et peut être téléchargé gratuitement.

http://www.codeprophet.co.cc

HTH

-Zak

Si vous développez .NET CF, consultez la page Power Toys pour .NET CF 3.5 pour les utilitaires pouvant vous aider à identifier les goulots d'étranglement, en particulier ceux liés à la mémoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top