ベンチマーク
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ベンチマーク (英:benchmark) は、本来は測量において利用する水準点を示す語。転じて金融、資産運用などや株式投資における指標銘柄など、比較のために用いる指標を意味する。また、広く社会の物事のシステムの有り方や規範としての水準や基準などを意味する。
目次 |
[編集] 測量におけるベンチマーク
建築物、構造物などの位置や高さ等の水準点または基準点に用いる。
通常では動かない位置をベンチマークポイントに定めそれを基準として建物、構造物の位置を決める。 ベンチマークには金属鋲等が打ち込まれることも有る。 また設計図書に何処がベンチマークポイントかは必ず明記される。 元来ベンチマーク(benchmark)と言う場合は測量等で使用される基準の物を指す。
[編集] コンピュータにおけるベンチマーク
コンピュータ分野においては、コンピュータシステムのハードウェアやソフトウェアの性能を測定するための指標のことを指す。ひとつあるいは複数のプログラムを実行した結果をベンチマークスコアと呼び、ある対象に関する相対的な性能を表す指標として用いられる。また、ベンチマークスコアを測定するための特別なプログラム(ベンチマーキングプログラム)自体をベンチマークと呼ぶこともある。著名なベンチマーキングプログラムとしてHPC性能を測るLINPACKや、データベース処理の性能を測定するTPC、DirectXを用いた3Dの性能を測る3DMarkなどがある。その他、ハードウェアの3D機能を使用するパソコン用のゲームソフトやオンラインゲームでは、動作確認と宣伝を主目的として、ゲームメーカーがゲーム素材を利用したベンチマークソフトを制作し、配布する事も見られている。
ベンチマークは、異なる部品構成やアーキテクチャを持ちスペックなどによる直接的な性能比較ができないシステムの間において、様々な観点で性能を比較する手段を提供する。
「ベンチマークスコアを測定する」ことを俗に「ベンチマークを取る」と呼ぶこともあるが、ベンチマークは基準点と言う意味であることから「取る」という言い方は間違いである。また、ベンチマークを略して「ベンチ」と呼ぶこともあるが、ベンチにつけられたマークが基準点を意味したことがベンチマークの語源であることから、「ベンチ」よりも基準点を指す「マーク」のほうが重要な語であり、マークを省略してベンチと呼ぶことには異論もある。
[編集] コンピュータにおけるベンチマークテスト
コンピュータ・アーキテクチャが進化するにつれ、その仕様を見ただけでは各種コンピュータの性能を比較することが難しくなってきた。そのため、異なるシステム上で動作できるテストプログラムが開発されてきた。そのようなテストを実行した結果を比較することで異なるアーキテクチャの性能を比較するためである。たとえば、インテルのPentium 4プロセッサと同程度の演算性能を示すAMDのAthlon XPプロセッサは動作周波数が(Pentium 4 よりも)低い。つまり、同じベンチマークテストを実行したとき、AMD の動作周波数の低いプロセッサとインテルの動作周波数の高いプロセッサが同程度の結果を示すのである。
ベンチマークは特定の負荷状況を再現するよう設計されている。元からベンチマーク用に開発されたプログラムは意図的にそのような負荷を作り出す。普通のアプリケーションをベンチマークとして使う場合もあり、この場合はそのアプリケーションの負荷が再現される。アプリケーションを使ったほうが実際の性能をよく表しているが、システム内の特定の部品の性能(ディスク性能、ネットワーク性能など)を測定したい場合などには専用ベンチマークプログラムが使われることが多い。
マイクロプロセッサの設計において、ベンチマークは測定手段となると共に回路化すべき部分の重要な判断基準となる。たとえば、あるベンチマークがあるアプリケーションのアルゴリズムの鍵となる部分を抜き出したものだった場合、そのベンチマークはそのアプリケーションの性能に大きな影響を与える部分を抜き出したものと考えることができる。そのような小さなプログラムをシミュレータで動作させることによって、性能を向上させる手がかりを得ることができる。
2000年ごろまで技術者はSPECを設計時に使っていたが、SPECは非常に大きいプログラムであり、シミュレータで動作させるには適していなかった。1998年、Markus Levy と半導体企業12社は EEMBC(Embedded Microprocessor Benchmark Consortium、組込みプロセッサベンチマーク協会)を設立し[1]、組込み市場向けのベンチマークを標準化した。これによってSPECよりも小さなプログラムで性能的に問題となるアルゴリズムに注目した測定が可能となった。半導体企業が測定したベンチマーク結果はEEMBCで検証および認定後、公表可能となる。EEMBC は組み込み用プロセッサが益々低消費電力化していくことから、電力消費のベンチマークを標準化しようとしている。
[編集] 問題点
コンピュータ企業はこれまで実性能とかけ離れた非現実的なベンチマーク性能を提示してきた。たとえば、1980年代のコンパイラには浮動小数点演算のベンチマークによく出てくる特定の操作を意味的には等価だがもっと高速な操作に置き換えるものもあった。しかし、そのような小手先の高速化はベンチマーク以外には通用しない。この状況は1990年代中盤ごろに変わってきた。RISCやVLIWアーキテクチャにより、コンパイラ技術が性能に重大な影響を与えることが明らかとなった。現在ではベンチマークはコンパイラ開発で使われることが多い。それは単にベンチマークプログラムの結果を良くするだけではなく、一般のアプリケーションの性能も向上させるために使われている。製造業者はその製品が得意とする分野のベンチマーク結果のみを公表する。このこともベンチマーク結果と実際の性能をかけ離れさせる一因となっている。このような手法を「ベンチマーケティング」などと呼ぶこともある。
ユーザーが製造業者が公表しているベンチマーク結果を使う場合、自分が知っているアプリケーションの負荷に直接関係するベンチマークやなんらかの認証を受けたベンチマーク以外は十分注意する必要がある。ベンチマークは実際のアプリケーションの代替品であり、そのアプリケーションが何らかの理由で使えないときのみ使われるべきものである。性能が最重要課題ならば、実際に使うシステムの負荷をベンチマークとして使う。それが不可能なら実際の負荷になるべく近いベンチマークを使う。そのベンチマークが認証されたものでなければ、慎重さが重要となる。たとえば、同じプログラムで性能を測定しても、入力や負荷状況によって測定結果が逆転することはあり得ないことではない。
[編集] プログラミング作業におけるベンチマーク
ある特定の機能を果たすプログラムを書くときに複数の手法が存在した場合、どの手法が最も効率的かを知る上でベンチマークを取る。このときに使うベンチマークは次節以降で紹介される、既成のベンチマークソフトを使うのではなく、下に示すような調査項目を記録できる処理を作成し、それをプログラム中に埋め込んで実行し、計測する。
また、コンパイラの設定によっては同じソースでも実行効率が変わるので、この点を明らかにする際もベンチマークを取ってどれが最善か調べる。特に、多種のCPUアーキテクチャ上で実行されるプログラムを作っているならば、この作業は入念に行う価値がある。
主な調査項目:
[編集] ベンチマークの分類
- 実際のプログラム
- ワープロソフト
- ユーザーのアプリケーションソフトウェア
- カーネル(基本的なベンチマーク)
- 基本的なコードを含む
- 一般に実プログラムから抽出されたコードを使う
- 典型例:リバモアループ(Livermore loop)
- linpack ベンチマーク (FORTRANで書かれた基本的な線形代数サブルーチンを含む)
- 結果は MFLOPS で表されることが多い
- 簡単なベンチマーク
- ユーザーがコンピュータの基本部品を評価するためにプログラムを書くことができる
- 合成ベンチマーク(Synthetic Benchmark)
- 合成ベンチマークを作成する手順
- 多くのアプリケーションを実行して操作の統計情報を得る
- 各操作の比率を割り出す
- その比率を元にプログラムを作成する
- 合成ベンチマークの例:
- Whetstone
- Dhrystone
- 合成ベンチマークを作成する手順
[編集] 著名なベンチマークソフトウェア
- Dhrystone - 整数演算性能
- Whetstone - 浮動小数点演算性能
- SPEC - 総合性能、マルチプロセッサ性能
- TPC-C - トランザクション性能
- LINPACK - 浮動小数点演算性能