On Tue, 8 Apr 2003, Sergei Olonichev wrote: > Привет все! > > Я тут оптимизировал свою программу: получил выход gprof, переписал две > верхних функции и снова получил выход. Проблема в том, что они как > занимали почти 5% по времени так и занимают. Хотя после оптимизации > функция synt::SyntTokensSpliter::Clear() > _состоит_в_обнулении_3-х_счетчиков_ и в принципе не может занимать 2.03% > по времени от 441 секунды, т.е. почти 9 секунд. > > Правда общее время работы сократилось с 457.57 до 441.09 сек., но почему > эти функции наверху? > В чем может быть проблема? > > С уважением, > Сергей > > > P.S. > До оптимизации gprof показывал: > > Flat profile: > > Each sample counts as 0.01 seconds. > % cumulative self self total > time seconds seconds calls ms/call ms/call name > 2.36 10.80 10.80 37194 0.29 0.30 > synt::SyntTokensSpliter::ReTokenize() > 2.12 20.50 9.70 37195 0.26 0.26 > synt::SyntTokensSpliter::Clear() > ... > > > После оптимизации стал показывать: > > Flat profile: > > Each sample counts as 0.01 seconds. > % cumulative self self total > time seconds seconds calls ms/call ms/call name > 2.36 10.41 10.41 37194 0.28 0.29 > synt::SyntTokensSpliter::ReTokenize() > 2.03 19.36 8.95 37195 0.24 0.24 > synt::SyntTokensSpliter::Clear() > ... >
Здравствуйте. Как мне кажется, здесь проблема в интерпритации результатов. Ваша функция вызывается 37195 за 2.03 сек., то есть время ее выполнения ~10^-4 сек., а время наблюдения 0.01 сек. Так что похоже, что оцениваемое время ее выполнения - просто неверно. Подробнее смотрите: http://www.opennet.ru/docs/RUS/gprof/ раздел: Статистические неточности в выводе gprof Успехов. Юра.

