Здесь я совершенно кратко поясню возможности профилирования. Это тоже отдельная наука. Но самое гравное это то что профилированние позволяет Вам анализировать скорость выполнения отдельных процедур и тем самым искать узкие места в Вашей программе.
Создаем приложение Win32 Console с типом "Hello World" и именем проекта TestProf. Следует отметить, что при использовании нормального MFC профилирование можно использовать. Только будет менее понятнее. Мы с Вами создадим просто учебный макет. Вот учебный :-) код.
#include "stdafx.h" void Funct1(); void Funct2(); void Funct3(); int main(int argc, char* argv[]) { Funct1(); Funct2(); Funct3(); return 0; } void Funct1() { printf("Funct1\n"); } void Funct2() { for (int x=0;x<10000;x++); printf("Funct2\n"); } void Funct3() { for (int x=0;x<30000;x++); printf("Funct3\n"); }
Чтобы использовать профилирование необходимо установить разрешение его при компиляции. Естественно увеличится размер кода. Но при окончательной сборке вы всегда сможете убрать эту опцию. Итак Project -> Setting -> Link -> Установть Enable Profiling.
Теперь наш проект можно запустить на профилирование. Выбирайте Build -> Profile должно появиться диалоговое окно. Если его нет, то сделайте сначала Rebuild All. Сборка будет идти медленнее. В диалоговом окне устанавливаются всякие опции. Вы оставьте всё по умолчанию и нажмите OK. Запустится приложение. А в нижнем окне на вкладке Profile появится информация. Примерно такая.
Funct1 Funct2 Funct3 Profile: Function timing, sorted by time Date: Sat Jan 22 13:55:15 2000 Program Statistics ------------------ Command line at 2000 Jan 22 13:55: "D:\PROJECT\TestProf\Debug\TestProf" Total time: 4,790 millisecond Time outside of functions: 3,431 millisecond Call depth: 2 Total functions: 4 Total hits: 4 Function coverage: 100,0% Overhead Calculated 6 Overhead Average 6 Module Statistics for testprof.exe ---------------------------------- Time in module: 1,359 millisecond Percent of time in module: 100,0% Functions in module: 4 Hits in module: 4 Module function coverage: 100,0% Func Func+Child Hit Time % Time % Count Function --------------------------------------------------------- 0,903 66,4 0,903 66,4 1 Funct3(void) (testprof.obj) 0,305 22,5 0,305 22,5 1 Funct2(void) (testprof.obj) 0,151 11,1 0,151 11,1 1 Funct1(void) (testprof.obj) 0,000 0,0 1,358 99,9 1 _main (testprof.obj)
Как видите все нормально. Скорость выполнения зависит от количества циклов for. Конечно это понятно. Ведь пример простой. А вот вы прогоните любой свой проект. Узнаете много интересного ;-).