[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[fol] pentium3 と pentium4 の条件分岐ベンチ


岡田です。

最近、何気なくpentium3-M 1.0GHz マシーンである EVO N410c で
ビデオエンコードしてみたら思いのほか遅くないことに気付いてしまいました。
ビデオフォーマットは divx です。比較対照は pentium4 2.4GHz + P4P800 です。


cat /proc/cpuinfo の切り抜きは
cpu family      : 15
model           : 2
model name      : Intel(R) Pentium(R) 4 CPU 2.40GHz
stepping        : 9
cpu MHz         : 2405.518
cache size      : 512 KB
と

cpu family      : 6
model           : 11
model name      : Mobile Intel(R) Pentium(R) III CPU - M  1000MHz
stepping        : 4
cpu MHz         : 996.693
cache size      : 512 KB
です。

そこで、どれくらいpentium4が遅いのか調べてみるために添付のような
ベンチマークプログラムを作ってみて比較すると

pentium4 2.4GHz -- 3.820秒
pentium3 1.0GHz -- 1.260秒
ついでに
pentiumMMX 0.266GHz -- 3.880秒


3倍ぐらいpentium4の方が遅く、クロックあたりに直すと7倍以上遅いと
いうことが解りました。
こういう結果を見るとAthlon64はどうなのか買い換えも含めて
気になってくるのですが、どなたかAthlon64で実行してみてくださる
奇特なかたいらっしゃりませんか?

cc -O3 bench.c
time a.out

です。
cc のバージョンは gcc version 3.2.2 でした。

-- bench.c ------------------------------------------------------
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

static void aa( float[],float[] );

int
main( ac,av )
int ac;
char **av;
{
#define DN 1024
float data1[DN];
float data2[DN];
int i;

	for ( i=0;i<DN;i++ )
	{
		if ( i&1 )
			data1[i]=(float)i;
		else	data1[i]= -(float)i;

		data2[i]=0;
	}

	for ( i=0;i<10000;i++ )
	{
		aa( data1,data2 );
		aa( data2,data1 );
	}

	exit( 0 );
}


static void
aa( float d1[DN],float d2[DN] )
{
int i;
float f;

	for ( i=0;i<DN;i++ )
	{
		f=d1[i];
		if ( f>0 )
			d2[i]=f;
		else	d2[i]=f + d2[i];
	}
}



$B$3$N>pJs$,$"$J$?$NC5$7$F$$?$b$N$+$I$&$+A*Br$7$F$/$@$5$!#(B
yes/$B$^$5$K$3$l$@!*(B   no/$B0c$&$J$!(B   part/$B0lIt8+$D$+$C$?(B   try/$B$3$l$G;n$7$F$_$k(B

$B$"$J$?$,C5$7$F$$?>pJs$O$I$N$h$&$J$3$H$+!"$4<+M3$K5-F~2<$5$!#FC$K!V$^$5$K$3$l$@!*!W$H8@$&>l9g$O5-F~$r$*4j$$7$^$9!#(B
$BNc(B:$B!VJ#?t$N%^%7%s$+$i(BCATV$B7PM3$G(Bipmasquerade$B$rMxMQ$7$F(BWeb$B$r;2>H$7$?$>l9g$N@_Dj$K$D$$F!W(B
Follow-Ups: