Rugg/Feldman ベンチマークは、さまざまなマイクロコンピュータでの BASIC 実装のパフォーマンスをテストするために使用される、7 つの短いBASIC プログラミング言語プログラムです。これらは、米国のコンピュータ雑誌Kilobaudの 1977 年 6 月号で Tom Rugg と Phil Feldman によって発表されました。
この記事は、スティーブ・ウォズニアックがApple IIコンピュータ用に書いたインタプリタ プログラムであるInteger BASICが、テストされた他のプログラムよりもはるかに高速であると報告しました。これにより、ビル・ゲイツからの長い手紙など、テストに関する幅広いコメントが寄せられました。1977 年 10 月号の続編記事では、これらの懸念について詳細に取り上げ、結果セットに多くの新しいマシンと BASIC を追加しました。
ジョン・コールは、 1978年2月号のイギリスの雑誌「パーソナルコンピュータワールド(PCW)」の記事で、超越関数を使った8番目のテストを追加しました。この拡張セットはPCW ベンチマークとして知られるようになり、Grundy NewBrainやBBC Microなどのイギリス設計のマシンのテストとして特に人気がありました。
このベンチマークは 1970 年代後半まで広く使用され、多くのコンピュータ雑誌やジャーナルで標準として取り上げられました。1980 年代には、米国ではCreative Computing BenchmarkやByte Sieveほど広く使用されませんでしたが、英国では一般的に使用されていました。
歴史
最初のテスト
ベンチマークスイートは、ベンダーが自社の BASIC が同じマシンで動作する他の BASIC よりはるかに高速であると主張していたことをテストするために導入されました。著者らは標準化されたベンチマークセットを見つけることができなかったため、独自のベンチマークを作成することに決めました。[1]テストでは、文字列と浮動小数点のパフォーマンスを意図的に無視しました。これは、当時の BASIC の多く、特にTiny BASICから派生したものにはこれらの機能が欠けていたためです。文字列は、異なるバージョン間の構文の大きな違いによってさらに妨げられました。[2] [a]
2人は、友人宅など、見つけられる限りのあらゆるマシンでベンチマークを実行した。Intel 8080、Zilog Z80、Motorola 6800、MOS 6502など、主要な8ビットCPUがすべてテストされた。比較のために、 CDC Cyber 174 スーパーコンピュータでも実行したが、このマシンは非常に高速であるため、ストップウォッチを素早く操作することができなかったため、システムクロックを使用して実行時間を計測するコードを追加する必要があった。このマシンを使用した理由は2つある。1つは、このようなマシンがどれだけ速く動作するかを確認するためであり、もう1つは、どのマイクロプロセッサもリストのトップにランクインして、それが最速であると証明されたと主張することがないようにするためであった。[3]
この記事は、 IMSAIコンピュータに同梱されていた BASIC が基本的に動作しなかったことを特に指摘しています。当時、このマシンは非常に新しく、BASIC は同社によって「予備的なもの」と説明されていました。この期間中、さまざまな IMSAI マシンがさまざまなバージョンの BASIC とともに出荷されました。各バージョンにはさまざまな機能がありましたが、ほとんどのプログラムを実行することさえできませんでした。[4]
オリジナルのInteger BASIC を使用したApple II は、他のすべてのマシンを大きく上回る結果となった。テストでは浮動小数点機能を使用しなかったため、数値の内部表現がはるかに単純であったことを考えると、この結果は驚くべきことではなかった。 [b]次に速かったのは、Altair 8800のZilog Z80アドイン カード上の Zapple BASIC であったが、大幅に遅かった。リストの残りの部分には、後にMicrosoft BASICとして知られるようになるものが多数含まれており、非常に近い間隔で並んでいた。8080 および Z80 マシンと BASIC のバージョン全体では、その差はわずか 20% であった。対照的に、6800 ベースのマシンはリストの最下位に完全に孤立しており、8080 および Z80 のエントリよりも 30 ~ 40% 遅かった。[4]
記事が印刷される頃には、Kilobaudの編集者は地元のコンピュータ ストアをいくつか訪れ、新しいマシンでプログラムをテストしました。このプロセスでは、IMSAI BASIC、North Star BASIC 、およびPoly-88の 11 kB BASICの製品バージョンが追加されました。IMSAI の結果は最下位で、North Star と Poly は中間でした。[5]
フォローアップ
ラグとフェルドマンは1977年10月号でこのスイートを再検討した。新しい記事は、最初の記事に関するメールが殺到したと述べることから始まった。その中にはビル・ゲイツからの手紙があり、彼らは彼を「Altair BASIC (8080および6800バージョン)、OSI BASIC、PET BASIC」の作者として紹介している。最後のエントリは「1977年の三位一体」マシンの1つであるコモドールPETについて言及しており、記事に載せるためにプロトタイプの形で提供された。[6]
ゲイツは、オリジナルのテストシリーズでは「整数BASICを、浮動小数点を使用するより強力なBASICと比較する」ことに不満を述べた。彼は、テストのDEFINT A-Z先頭にaを含め、新しいバージョンのAltair BASICでも整数演算を使用するようにすることを提案した。代わりに、ラグとフェルドマンは別のアプローチを取り、新しいテスト結果から整数のみのBASICをすべて排除した。[6]この時までに、カセットでMS由来のApplesoft BASICを導入していたApple IIは排除されなかった。 [7]
ゲイツ氏はまた、6800 マシンの結果がこのプロセッサの性能を示すものではないと指摘した。彼らが使用したマシン、Altair 680 は、CPU を定格速度の半分で動作させる。彼は、より一般的な 6800 ベースのマシンは 8080 よりもわずかに高速であると示唆した。しかし、6800 は、より高速で動作する新しいマシンでも、再び劣った結果となった。[6]
ゲイツ氏はまた、サイバー 173 のタイムが短かったのは、それがインタープリタではなくコンパイラであったためである可能性が高いと示唆した。著者らは、元のテストで使用した TRW BASIC ではそうではなかったと指摘し、これをきっかけにコンパイラとインタープリタの違いを比較している。[6]
ゲイツ氏は、結果の多くは異なるマシン上で実行されたにもかかわらず同一だったと述べて手紙を締めくくった。ゲイツ氏は、問題の BASIC には Altair BASIC の「署名」が含まれていたため「違法ソフトウェア」であると主張している。ゲイツ氏は盗まれたと主張するソフトウェアがどれなのかは明らかにしなかったが、著者らは「ビルが合法的な手段でそれらの販売を阻止できれば、我々はそれらのリストを中止する」と答えた。[8]
ラグとフェルドマンは、元の記事の後に提起された他の懸念のいくつかに言及して記事を締めくくっています。共通の問題の 1 つは、より高度な数学関数が不足していることです。これは彼らも認めていますが、読者に任せたほうがよいと示唆しています。もう 1 つは文字列操作が不足していることですが、文字列処理の構文はプラットフォーム間で大きく異なるため、単一のバージョンでは作成できないと彼らは指摘しています。[8] [c]
この一連のテストで、リストのトップに立ったのはOSI Challengerだった。これは 6502 ベースのマシンで、Apple II や PET のような当時の典型的な 1 MHz 6502 マシンの 2 倍の 2 MHz に「強化」されていた。通常の 1 MHz の速度で動作しているとき、Challenger は 4 MHz で動作する Z80 マシン上の Zapple BASIC にわずかに負けた。PET BASIC は次点で、Challenger にわずかに遅れをとった。[9]彼らは、6502 が CPU の中で最も高性能であると結論付けており、これは Gates が書簡で述べたコメントと一致している。6800 は再び最下位となった。[10]
PCWバージョン
1977年10月、ジョン・コールはTRS-80を含むコンピュータ市場への新規参入について論じた長文の記事の一部として、英国で入手可能なさまざまなマシンのベンチマークテストにラグ/フェルドマンテストを使用した。彼は数学ルーチンを実行するために8番目のテストを追加し、各テストが最後のテストを修正するという以前のコンセプトに従って、結果の実行時間自体とテスト7と比較した追加時間の両方を提供した。[11]結果は1978年2月のパーソナルコンピュータワールドの創刊号に掲載され、[12] 1978年11月号に短いフォローアップが掲載された。[13]
使用
F/Rテストは、BASICベンチマークの最も初期のセットの一つであり、主に1970年代後半から1980年代前半に見られました。これはKilobaudのレビューの標準であり、初期のマイクロコンピュータ向けに登場し続けた多くの新しいBASICの種類を比較するために使用されました。[14] Compute!は1979年にChallenger 1Pのレビューでこれを使用しました。[15]また、68 JournalはBASIC09の非常に高いパフォーマンスを実証するために使用しました。[16] InfoWorldは1981年にTRS-80用の新しいBASICのレビューでこれを使用しました。 [17]そしてTRS-80カラーコンピュータ全体。[18]
その後、バイトふるいが普及し始め、FRベンチマークに言及する記事の数は減少しましたが、HPジャーナルのような希少な情報源でもFRベンチマークを見つけることができました。[19]
PCWバージョンは英国で非常に人気があり、Grundy NewBrain、さまざまなSinclair Researchマシン、[20]、BBC Micro [21]などの英国中心のマシンのレビューの多くで見つけることができます。
プログラム
プログラムは、ユーザーが最初のテストを入力して実行し、その後、それをインプレースで修正して後続のテストを実行できるように設計されました。つまり、ユーザーは7つの異なるプログラムを入力する必要はなく、1つのプログラムを修正するだけで済みます。[3]最初の7つのリストは1977年の記事のオリジナルであり、[1] 8番目はPCWの追加です。[22]
ベンチマーク1
300 プリント K=1 から 1000 まで 400 500 ネクストK 700 プリント"E" 800 終了
FOR-NEXTループはBASIC言語の最も基本的な構造の1つであり、これらのループのパフォーマンスが遅い場合、そのBASICで実行されるプログラムも同様に遅くなる可能性が高くなります。この有名な例はAtari BASICで、当時の例と比較してFOR-NEXTループのパフォーマンスが大幅に低下するいくつかの問題があり、その結果、Atari上のBASICプログラムは一般的に非常に遅くなりました。[23]
ベンチマーク2
300 プリント 400K=0 500 K=K+1 600 K<1000の場合500 700 プリント"E" 800 終了
このテストは、最終的にはテスト 1 と同じ操作を実行しますが、この場合は、組み込みの FOR-NEXT 構造ではなく、明示的なテストとジャンプを使用します。一般に、このプログラムは 1 よりもはるかに遅く実行されます。これは、ほとんどの BASIC が、行番号を含む FOR 内のパラメータを、最初に遭遇したときに 1 回だけ解析するためです。テスト 1 のように IF を使用すると、ループを通過するたびに値が解析されます。さらに、ほとんどの BASIC は、ループの先頭の解析された行番号を単に保存するのではなく、メモリ アドレスを保存しますが、THEN では、インタープリタがプログラム全体をスキャンして、対応する行番号 (この場合は ) を探す必要があります500。このテストではサイズが小さいため表示されませんが、プログラムが長くなるにつれて、この検索にかかる時間はますます長くなります。BASIC の一部のバージョンでは、明示的なラベルを使用して GOTO を最適化したり、[24] GOTO ターゲットをスタックにプッシュして NEXT のように動作するようにしたりしました。[25] Turbo-Basic XL は両方を実行し、結果として同様の BASIC よりもはるかに高速に実行されました。[24]
ベンチマーク3
300 プリント 400K=0 500 K=K+1 510 A=K/K*K+KKとする 600 K<1000の場合500 700 プリント"E" 800 終了
テスト 3 はテスト 2 の拡張版で、今回は基本的な数学と変数アクセスが追加されています。テスト 2 と 3 の実行時間を比較することで、言語の数学ライブラリのパフォーマンスを把握できます。[1]
ベンチマーク4
300 プリント 400K=0 500 K=K+1 510 A=K/2*3+4-5とする 600 K<1000の場合500 700 プリント"E" 800 終了
変数がK数値定数に置き換えられていることを除いて、テスト 3 と同じです。これにより、インタープリタは値をテキスト表現から内部ストレージ形式に変換する必要があり、時間がかかります (一部のより高度な BASIC のように、実行前にこれを 1 回だけ実行しない限り)。この変換機能のパフォーマンスは、この時間をベンチマーク 3 と比較することである程度判断できます。[1]
ベンチマーク5
300 プリント 400K=0 500 K=K+1 510 A=K/2*3+4-5とする 520 ゴサブ 820 600 K<1000の場合500 700 プリント"E" 800 終了 820 戻る
テスト 5 ではサブルーチン呼び出しが導入されています。BASIC の初期バージョンでは、長いプログラムでサブルーチンが多用されていたため、呼び出しメカニズムの効率が重要でした。システムの動作方法によっては、戻りはNEXT に似た方法で呼び出し行の位置をキャッシュし、非常に高速に実行される可能性があります。他のシステムでは、呼び出し行の行番号を保存し、コードがプログラム リストをスキャンして RETURN を実行する必要があります。[1]
ベンチマーク6
300 プリント 400K=0 430 ディメンションM(5) 500 K=K+1 510 A=K/2*3+4-5とする 520 ゴサブ 820 530 L=1~5の場合 540 次L 600 K<1000の場合500 700 プリント"E" 800 終了 820 戻る
テスト6は、最初に小さな配列を定義し、メインループ内に別のFOR-NEXTループを追加します。これはコードにほとんど影響しませんが、テスト7のベースラインを設定するために使用されます。[1]
ベンチマーク7
300 プリント 400K=0 430 ディメンションM(5) 500 K=K+1 510 A=K/2*3+4-5とする 520 ゴサブ 820 530 L=1~5の場合 535 M(L)=A 540 次L 600 K<1000の場合500 700 プリント"E" 800 終了 820 戻る
これにより、ループを実行するたびに配列の各要素に値が割り当てられます。7と6の実行に必要な時間を比較すると、配列アクセスの効率がわかります。[1]
ベンチマーク8
300 プリント 400K=0 500 K=K+1 530 A=K^2 540 B=LOG(K) 550 C=SIN(K) 600 K<100の場合500 700 プリント"E" 800 終了
テスト8はPCW [11]によって追加され、いくつかの超越関数を実行してそのパフォーマンスをテストしました。このコードにはテスト7のコードは含まれておらず、各テストを最後に追加するという元のパターンが崩れています。代わりに、関連する記事には8と7の実行時間と8を組み合わせた時間の両方が記載されています。[12]
サンプル結果
このリストは網羅的なものではなく、初期のマイクロコンピュータやホームコンピュータ時代のいくつかの人気システムで確認された結果の簡単な概要です。最初の表には、1977 年 6 月の元のテストから選択したマシンが含まれていますが、例外もあります。[1]テスト時間は秒単位です。
注記
- ^ 当時、BASIC で使用されていた文字列処理には 2 つの主要な方言がありました。1 つ目は Hewlett-Packard がHP 2000ラインの一部として導入したもので、操作に配列のスライスを使用していました。2 つ目は Digital Equipment (DEC) が導入したもので、代わりに文字列関数を使用していました。DEC方言に基づくMicrosoft BASIC が事実上の標準となり、1970 年代後半までに、 Atari BASICを除いて、以前の構文はほとんど姿を消しました。
- ^ 整数 BASIC は 16 ビットの 2 進数を使用しますが、ほとんどの BASIC は 32 ビットまたは 40 ビットの浮動小数点形式を使用するため、処理に時間がかかります。詳細については、 「Microsoft バイナリ形式」を参照してください。
- ^ 文字列構文の問題は、DEC と HP の方言に触発された BASIC の違いから生じています。Microsoft BASIC は DEC のBASIC-PLUS の種類に基づいており、関数を使用して文字列を操作しますが、HP はAtari BASIC、North Star BASICなどに見られるFORTRAN 77やC
MID/LEFT/RIGHTに似た「文字配列」システムを使用しています。この 2 つは大きく異なるため、一方から他方へ直接移植するのは簡単ではありません。このような移植性はベンチマーク スイートの目標でした。
参考文献
引用
- ^ abcdefgh RuggFeldman1977年6月、66ページ。
- ^ RuggFeldman1977年6月、67ページ。
- ^ ab RuggFeldmanJun1977、p.68。
- ^ ab RuggFeldmanJun1977、p.69。
- ^ RuggFeldman1977年6月、70ページ。
- ^ abcd RuggFeldman1977年10月、22ページ。
- ^ Herzfeld, Andy (2014年2月12日). 「MacBasic – MacBasicの悲しい物語」. Folklore.org .
- ^ ab RuggFeldmanOct1977、p. 24。
- ^ RuggFeldman1977年10月、23ページ。
- ^ RuggFeldman1977年10月、25ページ。
- ^ ab PCWFeb1978、p.57。
- ^ ab PCWFeb1978、p.58。
- ^ PCW1978年11月。
- ^ Didday, Rich (1978 年 1 月)。「4 つの BASIC の物語: 6800 にはどれが適しているか?」( PDF)。Kilobaud。pp . 50–59。
- ^ Russell, W. Keith (1979年秋)。「The Challenger 1P」。Compute ! pp. 100–104。
- ^ Harmon, Tom (1980 年 9 月). 「OS/9-BASIC09」. 68 Micro Journal . pp. 26–27.
- ^ Puckett, Dale (1981 年 8 月 31 日)。「Microsoft の TRS-80 用拡張カラー BASIC」。InfoWorld。pp . 26–28。
- ^ パケット、デール(1982年8月16日)。「ラジオシャックカラーコンピュータ」。InfoWorld。pp.57–61。
- ^ Bidwell, John; Palermo, David (1982 年 5 月). 「計測自動化およびコンピュータ支援エンジニアリング アプリケーション向けの高度な多言語コンピュータ システム」(PDF) . Hewlett-Packard Journal . 33 (5): 3–7.
- ^ パーソナルコンピュータワールド、1983 年および 1984 年のベンチテスト概要
- ^ Ochocki, Peter. 「パーソナルコンピュータの世界ベンチマークテスト」
- ^ PCW1978年11月、58ページ。
- ^ ウィルキンソン、ビル (1982)。Atari DOS 内部。最適化されたシステムソフトウェア。p. 191。ISBN 0-942386-02-7. 2009年4月4日閲覧。
- ^ ab "Turbo-Basic XL" (PDF) . Happy-Computer . 1985年12月. pp. 34–47.
- ^ BASIC XL (PDF) . 最適化システムソフトウェア. 1983. p. 35.
- ^ ベンチテスト:Acorn Electron。1983 年 10 月。
- ^ Dator Hobby Nr1 1984年。
- ^ CreativeEmu フォーラムのスレッド。
文献
- Rugg, Tom; Feldman, Phil (1977 年 6 月)。「BASIC タイミング比較... スピードマニアのための情報」Kilobaud。pp . 66–70。
- Rugg, Tom; Feldman, Phil (1977 年 10 月)。「BASIC タイミング比較... 改訂および更新」。Kilobaud。pp . 20–25。
- ジョン・コル (1978 年 2 月)。「ダイレクト アドレス指定: パーソナル コンピュータを入手する場所」。パーソナル コンピュータ ワールド。pp. 55–58。
- ジョン・コル (1978 年 11 月) 「ベンチマーク再び」Personal Computer World 52 ページ。
さらに読む
- 『コンピュータ ハンドブック: ビジネスマンのためのコンピュータ システムの選択と使用ガイド』では、ベンチマーク セットの一部として PCW バージョンがリストされています。
