Инструменты профилирования кода / анализа производительности для Windows CE / Mobile - PullRequest
6 голосов
/ 02 ноября 2008

Какие инструменты, кроме тех, которые вы знаете в Visual Studio, используются для анализа узких мест производительности в приложении Windows CE / Mobile? Я ищу что-то вроде AQTime для CE / Mobile, чтобы профилировать приложения C / C ++, скомпилированные с собственным кодом.

Ответы [ 4 ]

9 голосов
/ 02 декабря 2008

Windows CE поддерживает Remote Call Profiler (если OEM добавил поддержку для него) из коробки. Я полагаю, что образы WinMo уже есть в изображениях. Для CE вам необходимо установить переменную среды IMAGEPROFILER (используя свойства проекта).

Что неясно в MSDN, так это то, как оборудовать приложение, которое не создано с помощью Platform Builder, но на самом деле это довольно просто. Вы должны добавить / callcap swith в командную строку компилятора и добавить cecap.lib в настройки компоновщика.

Конечно, вам понадобится инструмент для захвата и отображения данных профилировщика. Для этого вы можете использовать ознакомительную версию Platform Builder ( 5.0 или 6.0 ) (пробная версия бесплатна) или eVC 4.0 (также бесплатная).

Для получения дополнительной информации об использовании профилировщика Сью Лох из основной команды CE немного рассказала об этом.

5 голосов
/ 02 ноября 2008

Я не нашел таких инструментов для WindowsMobile для собственной разработки.

Самым близким, что я нашел, является набор инструментов EnTrek (CodeSnitch / ProcMan), но они на самом деле не являются инструментами профилирования. http://www.entrek.com/products.htm

Что мы сделали, так это встроили собственную поддержку профилирования в наши собственные продукты с помощью переключателя Vistual Studio "/ callcap" для VC ++. С помощью этого переключателя вы можете создать библиотеку профилирования, которая выводит данные о времени и подсчете, как вам угодно. В основном это хорошо работает для нас, но иногда накладные расходы на эти функции перехвата могут быть слишком большими, и это может исказить результаты синхронизации в области большого количества вызовов функций.

Из документов MSDN:

Параметр / callcap вызывает компилятор для вставки вызовов в профилирование крючки в начале и в конце каждого функция.

Вы должны скомпилировать профилирующие хуки без переключателя callcap. если ты скомпилировать функции профилирования с переключателем callcap, функции будет выполнять бесконечные рекурсивные вызовы для себя.

Следующий пример кода, Callcaphooks.c, показывает профилирование функция _CAP_Enter_Function, для компиляция без 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;
}
3 голосов
/ 27 января 2010

Я написал профилировщик графа вызовов для Windows Mobile. В настоящее время (по состоянию на январь 2010 г.) она находится в бета-фазе и может быть загружена бесплатно.

http://www.codeprophet.co.cc

НТН

-Zak

0 голосов
/ 02 ноября 2008

Если вы занимаетесь разработкой .NET CF, проверьте Power Toys для .NET CF 3.5 для утилит, которые могут помочь вам выявить узкие места, особенно связанные с памятью.

...