Влияет ли флаг отладки gcc -g на выполнение программы?

Я только что тестировал программу, над которой работаю, и вижу, что она выполняется на 3 мкс быстрее (статистически значимое изменение), когда я ее компилирую. с -g. Для меня это не имеет смысла - я думал, что флаг -g не должен влиять на выполнение программы, и что даже если бы он это сделал, он заставил бы ее работать медленнее, а не быстрее.

Кто-нибудь может сказать мне, почему это происходит? И изменит ли это поток выполнения программ? Я не компилирую с -O, потому что мне нужно, чтобы он выполнялся точно так, как написано, но если -g может каким-то образом ускорить его работу с изменением порядка инструкций, я, очевидно, должен использовать это.

Так что мне нужно точно знать, какие изменения флаг -g делает программу.

Редактировать: Чем больше тестов я запускаю, тем больше становится t-значение (= тем более статистически значимой становится разница). Это определенно не ошибка измерения - что-то происходит.

11
задан Benubird 3 February 2011 в 11:21
поделиться