Доброго времени суток. Ситуация такова что есть такой makefile в котором поставлен ключ для профайлера. Код (Text): CFLAGS = -pg -D_FILE_OFFSET_BITS=64 -O2 CC = gcc LIBS = INCLUDES = OBJS = faith.o SRCS = faith.c HDRS = all: faith clean faith: faith.o ${CC} ${CFLAGS} ${INCLUDES} -o $@ ${OBJS} ${LIBS} clean: rm *.o и есть "чистый" makefile без него Код (Text): CFLAGS = -D_FILE_OFFSET_BITS=64 -O2 CC = gcc LIBS = INCLUDES = OBJS = faith.o SRCS = faith.c HDRS = all: faith clean faith: faith.o ${CC} ${CFLAGS} ${INCLUDES} -o $@ ${OBJS} ${LIBS} clean: rm *.o При компиляции и выполнении с профайлером время выполнения 220 секунд (измеритель time), а без него (с "чистым" makefile) 340 секунд. По идее должно быть наоборот. Можете объяснить что за странности и что сделать чтобы без него было хотя бы близко к 220? Разница столь велика что выгоднее оставить профайлер, но как-то стремно в релиз с ним идти. Заранее спасибо.
Спасибо за наводку. Посмотрел objdump. Vimdiff показывает дохрена различий. Очень напрягло что при чистой компиляции в критических частях программы есть много nop'ов, а при профайлере их там нет. 0_о Если уж очень любопытно то https://github.com/yaku/faith (ветка develop) Код еще очень сырой, так что похвастать нечем. P.S: сейчас протестировал. "чистый" 353. С профайлером 184 0о
Сорри, может кто знает профайлер, который способен работать на чужих бинарниках? Просто мне надо узнать где прога проводит большее количество времени, чтобы вычленить нужную мне процедуру.
yaku_toi Попробуй указать целевую субархитектуру. Добавь к флагам компилятора опцию -mtune=... которая соответствует твоему процессору.
Спасибо. Это помогло немного увеличить скорость. Но главная проблема была в другом. Как оказалось профайлер _деструктивно_ _изменял_ внутреннюю работу программы что и приводило к уменьшению времени выполнения. Там где нужны были случайные числа программа просто записывала нули. Возможно это связано с какими-то внутренними недоработками, но врятли т.к без профайлера все работает прекрасно. Так что используйте -pg на свой страх и риск.