Как профилировать C-программу в цикле сценария оболочки, используя Shark на Mac? - PullRequest
0 голосов
/ 25 марта 2010

У меня вопрос по профилированию акул на mac.

Скажите, если у меня есть C-программа, скомпилированная с:

gcc -o mycprog mycprog.c -g -pg

а также у меня есть сценарий оболочки что-то вроде:

for file in ($SomeDirectory)
do
    mycprog $file
done

Мне нужно профилировать среднюю производительность для всех файлов в $ SomeDirectory.

Куда мне положить команду shark -i? Спасибо.

1 Ответ

0 голосов
/ 25 марта 2010

Это не очень хороший подход по разным причинам - в идеале вы должны изменить внешний цикл вашей программы, чтобы он мог обрабатывать все файлы в командной строке, тогда вы можете просто сделать все за один прогон:

$ shark -i
$ mycprog $SomeDirectory/*

Если вы не можете этого сделать, вам нужно будет настроить свою конфигурацию Shark для профилирования в масштабе всей системы и начать профилирование до цикла bash, а затем прекратить профилирование. Когда вы впоследствии просмотрите профиль в Shark, вы сможете отфильтровать интересующие вас процессы.

Сначала откройте Shark (приложение с графическим интерфейсом), настройте свою конфигурацию и включите дистанционное управление (Sampling => Programmatic). Убедитесь, что вы выбрали Time Profile и Everything.

Затем из командной строки:

$ chudRemoteCtrl -s "mycprog"
$ sleep 1
$ for f in $SomeDirectory/*
$ do
$     mycprog $SomeDirectory/$f
$ done
$ chudRemoteCtrl -e
...