Yuri Nefedov, Tue, Apr 08, 2003 14:58:48 +0200: > > Я тут оптимизировал свою программу: получил выход gprof, переписал две > > верхних функции и снова получил выход. Проблема в том, что они как > > занимали почти 5% по времени так и занимают. Хотя после оптимизации > > функция synt::SyntTokensSpliter::Clear() > > _состоит_в_обнулении_3-х_счетчиков_ и в принципе не может занимать 2.03% > > по времени от 441 секунды, т.е. почти 9 секунд. > > > > Правда общее время работы сократилось с 457.57 до 441.09 сек., но почему > > эти функции наверху? > > В чем может быть проблема? > > > Подробнее смотрите: http://www.opennet.ru/docs/RUS/gprof/ > раздел: Статистические неточности в выводе gprof >
правда-правда. Если есть _однопроцессорный_пентиум_, можешь сравнить производительность своей функции (до и после) через rdtsc: #define rdtscll(val) \ __asm__ __volatile__("rdtsc" : "=A" (val)) использовать так: unsigned long long tsc1, tsc2; rdtscll(tsc1); ... rdtscll(tsc2); printf("%Lu\n", tsc2 - tsc1); Намного точнее (если сравнивать на одном и том же компе). Больше эта штука ни на что не годится, к сожалению (это количество процессорных циклов).