ビットシフト演算が遅い・・・?

Cで2の累乗の乗算をする時、ビットシフトを使うとどのくらい速くなるのか実験するため、timeコマンドで以下の二つのプログラムのreal 時間を計測してみました。

// ord.c
#include <stdlib.h>

main() {
	unsigned int temp;
	int loop;
	
	for (loop = 0; loop <= 10000000; loop++) {
		temp = rand () / (RAND_MAX / 16777216 + 1);
		temp *= 8;
	}
}
// bit.c
#include <stdlib.h>

main() {
	unsigned int temp;
	int loop;
	
	for (loop = 0; loop <= 10000000; loop++) {
		temp = rand () / (RAND_MAX / 16777216 + 1);
		temp <<= 3;
	}
}

ビルド:

gcc -O0 -s -oord ord.c
gcc -O0 -s -obit bit.c


それぞれ5回実行した結果。
乗算: 平均 331.0ミリ秒
ビットシフト: 平均 374.6ミリ秒
・・・ビットシフトの方が40ミリ秒ほど遅くなってます。なぜ?


ちなみに、実験環境は、
OS: Linux 2.4.27
CPU: Intel(R) Pentium(R) 4 CPU 2.40GHz stepping 07
コンパイラ: gcc 3.3.2 20031218
glibc 2.3.3
です。