CPU MUSEUM

Hiroshi Fukuda

(1987-2024.4.11) 🖊

このページの最後に掲載した, 四則演算と関数計算を含んだ FORTRAN/C プログラムを n=1000000 で,コンパイラで最適化せずに様々な機種で実行して,実行時間を計測しました.(2007年以降はn=100000000で実行して時間を1/100にした)

機種 year CPU Clock 時間 (sec) MIPS OS Compiler
(PC9801)
EPSON PC286L 1987 i286 10MHz 8000 0 .04 MS-DOS FOR
NEC PC9801NS 1990 i386SX 12MHz 5000
0 .06 MS-DOS FOR
NEC PC9801RX 1988 i286 12MHz 3700
0 .08 MS-DOS FOR
+486GTR+S87R 60 4 MS-DOS FOR
EPSON PC-386GS 1991 i386DX 20MHz +486SLC 2700
0 .1 MS-DOS FOR
NEC PC9801BX 1993 i486SX 20MHz 1500
0 .19 MS-DOS FOR
NEC PC9801NS/T 1992 386SL(98)20MHz+387 90 3 MS-DOS FOR
(DOS/V)
IBM PS/V 486DX2 1993 i486DX2 66MHz 12 22 MS-DOS FOR
Idexon 486/66VLB 1993 i486DX2 66MHz 11 26 Win95 VC4
Fujitsu FMV-499D2 1994 i486DX4 99MHz 9 31 MS-DOS FOR
Toshiba PV3000 5100 1995 Pentium 100MHz 3 94 Win95 VC4
Fujitsu FMV-5120NU2/W 1996 Pentium 120MHz 2 .6 108 Win95 VC4
Toshiba PV3000 5100 1997 PentiumODP MMX166MHz 1 .9 148 Win95 VC4
Fujitsu FMV-6200D7 1997 PentiumPro 200MHz 1 .3 217 WinNT4.0 VC4
Fujitsu FMV-6300T7 1998 Pentium2 300MHz 0 .6 469 Win95 VC5
AOpen AX6BC ProII 2000 Pentium3 450MHz 0 .39 722 Win2000 VC6
FSB 100->133MHz 0 .29 957 Win2000 VC6
SONY PCG-SR9M/K 2001 Pentium3 750MHz 0 .24 1180 Win2000 VC6
AOPEN AX3S PRO 2001 Celeron 800MHz 0 .22 1272 Win2000 VC6
Intel D850MD 2001 Pentium4 1.7GHz FSB400MHz 0 .2 1406 Win2000 VC6
Panasonic CF-R3 2008 PentiumM 1.1GHz 0 .196 1438 WinXPSP3 VC8
Panasonic CF-R7 2008 Core2 Duo 1.06GHz U7500 0 .196 1439 WinXPSP3 VC8
AOPEN AX4B PRO-533 2002 Pentium4 2.0AGHz 0 .17 1684 Win2000 VC7
ASUS P4P800SE 2008 Pentium4 3.0GHz 0 .127 2214 WinXPSP3 VC8
ASUS N4L-VM-DH 2007 Core Duo 1.83GHz 0 .118 2397 WinXP VC8
FOXCONN G31MX-K 2008 Core2 Duo 3.16GHz E8500 0 .056 5020 WinXPSP3 VC8
FOXCONN G31MX-K1 2009 Core2 Duo 3.16GHz E8500 0 .042 6673 CentOS5 gcc
0 .063 4456 CentOS5⁶⁴ gcc
FOXCONN G31MX-K 2008 Core2 Duo 3.33GHz E8600 0 .052 5412 WinXPSP3 VC8
Dospara Monarch 2010 Core i7-920 2.67GHz 0 .051 5528 WinXPSP3 VC8
Dospara Monarch 2011 Core i7-2600 3.40GHz 0 .04 6987 Win7SP1 VC10
NEC LZ750HS 2012 Core i7-3517U 1.90GHz 0 .05 5613 Win7SP1 VC10
Dospara Galleria¹ 2013 Core i7-4771 3.50GHz 0 .038 7452 Win7SP1 VC10
0 .04 7026 VC14⁶⁴
Dospara Monarch LK 2016 Core i7-6700K 4.00GHz 0 .036 7736 CentOS7 gcc
Gigabyte 990FXA-UD3⁴ 2014 AMD FX-8320 4.4GHz 0 .042 6704 Win7SP1 VC10
SONY VJP1111 2014 Core i5-4210U 1.70GHz 0 .056 5070 Win7SP1 VC10
Gigabyte GA-X99⁵ 2015 Core i7-5820K 4.2GHz 0 .033 8356 Win8.1 VC10
Gigabyte GA-X99⁵ 2015 Core i7-5820K 3.3GHz 0 .042 6664 Win8.1 VC10
Dospara MagnateGE 2015 Core i7-4790K 4.0GHz 0 .033 8557 Win7SP1 VC10
DG-M01IW 2015 Atom Z3735F 1.33GHz 0 .147 1913 Win10 VC10
Dospara Galleria 2018 Core i9-7900X 4.3GHz 0 .036 7728 Win10 VC14
0 .025 11 k WSL2 gcc
0 .0098 29 k WSL2 gcc -O3
Dospara Monarch ZH 2019 Core i9-9900K 5.0GHz 0 .029 9785 Win10 VC14
- ASRock Z390 Phantom 0 .040 7072 Win10 JDK15
Gaming 4 0 .041 6941 WSL2 JDK11
0 .023 12 k WSL2 gcc
0 .011 25 k WSL2 gcc -O3
ASRock B760M-HDV/M.2 D4 2023 Core i9-13900K 5.8GHz 0 .0058 48 k WSL2 gcc -O0
0 .0042 67 k WSL2 gcc -O3
MSI PRO B760M-A DDR4 II 2024 Core i9-14900KF 6GHz 0 .0056 51 k WSL2 gcc -O0
0 .0041 69 k WSL2 gcc -O3
Fujitsu WU2/D2 2019 Core i7-8565U 1.80GHz 0 .036 7931 WSL2 gcc
(MAC)
MacPlus³ 1986 68000 7.83MHz 18 k 0 .02 Sys6.0.7 MPW
PowerMac 7100/66AV² 1997 PowerPC 601 66MHz 3 .7 77 MacOS7.5
iMac(Rev.B)³ 1998 PowerPC 750 233MHz 1 .4 201 LinuxPPC gcc
0 .46 603 MacOS8.5 MPW
MacBook Air 2012 Core i7-3667U 2GHz 0 .049 5637 OSX10.9⁶⁴ LLVM
(WS)
SUN 4/1+ 1991 12 .8 22 SunOS cc
SUN Sparc Classic 1992 8 .7 32 SunOS cc
SUN Sparc5 1994 3 94 SunOS cc
Toshiba AS4035 1995 Sparc 110MHz 4 .9 57 SunOS gcc
Fujitsu S-7/7000U 300 1997 UltraSparc 167MHz 2 .2? 128 Sola2.5.1 gcc
DELL PowerEdge T105 2007 Opteron 1210 1.8GHz 0 .078 3606 CentOS5 gcc
DELL PowerEdge1950 2008 Xeon E5335 2.00GHz 0 .073 3873 CentOS5 gcc
DELL PowerEdge T300* 2009 Xeon E3113 3.00GHz 0 .044 6342 CentOS5 gcc
DELL PowerEdge T320* 2014 Xeon E5-2440 2.40GHz 0 .054 5186 CentOS6 gcc
DELL PowerEdge T330* 2018 Xeon E3-1270v6 3.80GHz 0 .038 7469 CentOS7 gcc
DELL PowerEdge R340 2020 Xeon E-2174G 3.80GHz 0 .023 12 k CentOS8 gcc
0 .009 30 k CentOS8 gcc -O3
(大型汎用機)
FACOM M760/8 1991 6 47 UNIX cc
FACOM M1700@静岡 1994 (RAM128MB, HDD32GB) 5 56 UNIX cc
FACOM M1800@RIKEN 1990 1 280 UNIX cc
Cray-f@Livermore 1991 0 .003 91 k UNIX cc
  • 機種名が斜体のものはノート(ラップトップ)型。
  • 上付き添え字は,コンパイラ/OSのビット数。添え字のないものは,CentOS6,Win7以降は64ビット,それ以前は32ビット。
  • OSの横はコンパイラ。 FOR:MS-FORTRAN Ver4, VC4:Visual C++4.0, VCx:Visual C++ x.0, JDK15:bellsoft-jdk15.0.2+10-windows-amd64, JDK11:OpenJDK 11.0.17。
  • UNIXでのコンパイルは,cc -lm -O0 cpu.c。そして,time ./a.out とやると,実行時間が正確に測れます。
  • Linuxでのコンパイルは,gcc -O0 cpu.c -lm。gccがインストールされていない場合は,CentOSならyum install gcc,Ubuntuならapt install gcc。
  • WSL2の導入方法はここ
  • MIPS値とは,Million Instructions per Secondsの頭文字で,1秒間に実行できる命令数(100万単位)。岩波情報科学辞典より。表のMIPS値は,SUN4/1+の22MIPSを既知として比例計算したもの。この値xをインテルi286からPentium 4までのMIPS値yと比較すると,そう大きくは違っていない。回帰分析するとy=1.27x, R²=0.989となり,30%ほどの違いである:

    計測値x[MIPS] 資料値y[MIPS]
    SUN 4/1+ 22 22
    Pentium 100MHz 94 167
    Pentium 120MHz 108 200
    PentiumPro 200MHz 217 440
    Pentium2 300MHz 469 526
    Pentium3 450MHz 722 900
    Pentium3 750MHz 1180 1500
    i286 10MHz 0.04 1.5
    i286 12MHz 0.08 1.8

  • ?WorkStationでこのプログラムを実行する時間は, nには比例しないようです???
  • ²Kozeki様 (National Research Institute of Fire and Disaster)より。 コンパイラはSYMANTECH C++ Ver8.02。メールありがとうございます(1997/6/2)。
  • ³中西様(卒業生)より.MPW=Apple 純正の開発環境。メールありがとうございます(1999/6/23)。
  • ⁴千葉様(北里1年生)より。LLVM=Apple LLVM version 5.1 (clang-503.0.40)。(2014/4/23)
  • ⁵山本様(北里大学一般教育部情報科学単位TA)より。4.2GHzはオーバークロック。(2015/2/7)
  • *kilin

計測用プログラム

FORTRAN
      implicit real*8(a-h,o-z)
      write(6,*) 'n ?'
      read(5,*) n
      do 10 i=1,n
         x=i
         y=sin(x)/x+x
   10 continue
      write(*,*) 'y=', y
      end

C
#include "stdio.h"
#include "math.h"
#include "time.h"
void main()
{
  int i,n=100000000; 
  double x,y,t;
  clock_t start,finish;
  start=clock();
  for(i=1;i<=n;i++){
    x=i;
    y=sin(x)/x+x;
  }
  finish=clock();
  t=(double)(finish-start)/CLOCKS_PER_SEC;
  printf("y=%f\n", y);
  printf("cpu time=%lfsec, about %lfMIPS\n",t,22*12.8/t*n/1000000);
  getchar(); getchar();     
}

Java
public class CpuTimex
{
  public static void main(String args[])
  {
    long t1=System.currentTimeMillis();
    int i, n=100000000; 
    double x,y=0;
    for(i=1;i<=n;i++){
      x=i;
      y=Math.sin(x)/x+x;
    }
    System.out.println("y="+y);
    long t2=System.currentTimeMillis();
    double t=(t2-t1)/1000.0;
    System.out.println(t+"sec, about "+22*12.8/t*n/1000000+"MIPS");
  }
}

cpu.zipは,上のソースをコンパイルしたWindows95-10用実行ファイルたちです。

コンパイラ オプション 実行ファイルx86 x64
Visual Studio 2015 (VC14) /Od/GS- cpu.2015.32.exe cpu.2015.64.exe
Visual Studio 2010 (VC10) cpu.2010.32.exe
Visual Studio 2008 (VC9) cpu.2008.exe
Visual Studio 2005 (VC8) cpu.2005.exe
Visual Studio.NET 2002 (VC7) cpu.exe
Visual C++ 6.0 Sp4 (VC6) cpu.vc6.exe

関連ページ

CristalDiskMark

コメントまたは連絡フォームでCPU MUSEUMへの情報をお寄せください。

コメント

連絡フォーム

名前

メール *

メッセージ *