Здравей,
По ред на номерата:
1) промяната в двоичния код можеш да видиш само като я дизасемблираш (примерно с gdb).
При това, обикновено далеч не е толкова лесно гледайки генерираният код, дали е по-оптимален. Инструкциите имат различна латентност и никой не е казал че се изпълнява една инструкция на такт. Освен това има pipelining, освен това силно зависи дали данните се намират в кеша или не и т.н. Много tricky е да видиш примерно че са генерирани по-малко инструкции и да заключиш че това е по-оптимално и се изпълнява по-бързо. Ако беше така, -Os щеше да генерира по-бърз код от -O3 примерно

Освен това оптимизациите, които прави компилатора далеч не са толкова прости и в много случаи е много трудно да схванеш замисъла.
2) тестването е много относително понятие - това е едно уравнение с прекалено много неизвестни. Доста трудно е да се направи тест, който да изолира повечето неизвестни. В този ред на мисли, разни сайтове като Phoronix имат навика да правят такива спекулативни тестове, които според мен е доста грешно някой да взема прекалено насериозно.
3) Може, това е на практика същото като amd64.