ベンチマーク

ベンチマーク（英: benchmark）とは、本来は測量において利用する水準点を示す語で、転じて金融、資産運用や株式投資における指標銘柄など、比較のために用いる指標を意味する。また、広く社会の物事のシステムのあり方や規範としての水準や基準などを意味する。またベンチマーキングとは自社の課題解決のために、競合他社などの優れた経営手法（ベストプラクティス）を持つ企業を分析するプロセスを指す。 建築物、構造物などの位置や高さなどの水準点または基準点に用いる。通常では動かない位置をベンチマークポイントに定めそれを基準として建物、構造物の位置を決める。ベンチマークには金属鋲などが打ち込まれることもある。また設計図書にどこがベンチマークポイントかは必ず明記される。元来ベンチマーク (benchmark) と言う場合は測量などで使用される基準の物を指す。 コンピュータの分野においては、コンピュータシステムのハードウェアやソフトウェアの性能を測定するための指標のことを指す。ひとつあるいは複数のプログラムを実行した結果をベンチマークスコアと呼び、ある対象に関する相対的な性能を表す指標として用いられる。また、ベンチマークスコアを測定するための特別なプログラム（ベンチマーキングプログラム）自体をベンチマークと呼ぶこともある。著名なベンチマーキングプログラムとしてHPC性能を測るLINPACKや、データベース処理の性能を測定するTPC、DirectXにより3DCGの性能を測る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年代のコンパイラには浮動小数点演算のベンチマークによく出てくる特定の操作を意味的には等価だがもっと高速な操作に置き換えるものもあった。しかし、そのような小手先の高速化はベンチマーク以外には通用しない。ユーザーが製造業者が公表しているベンチマーク結果を使う場合、自分が知っているアプリケーションの負荷に直接関係するベンチマークやなんらかの認証を受けたベンチマーク以外は十分注意する必要がある。ベンチマークは実際のアプリケーションの代替品であり、そのアプリケーションが何らかの理由で使えないときのみ使われるべきものである。性能が最重要課題ならば、実際に使うシステムの負荷をベンチマークとして使う。それが不可能なら実際の負荷になるべく近いベンチマークを使う。そのベンチマークが認証されたものでなければ、慎重さが重要となる。たとえば、同じプログラムで性能を測定しても、入力や負荷状況によって測定結果が逆転することはあり得ないことではない。 このような状況が問題となった1980年代は、CPUのアーキテクチャが従来の16ビットから32ビットへ大きく転換する時期にあたり、企業が都合のよい独自のベンチマークを発表していた。アーキテクチャやOSが異なる環境での比較は単純ではなく、アプリケーションベンダやユーザも巻き込んでの試行錯誤が続いていた。1990年代中盤ごろになるとRISCやVLIWアーキテクチャが登場し、ハードウェアの構造が単純になったことでコンパイラ技術が性能に重大な影響を与えることが明らかとなった。現在ではベンチマークはコンパイラ開発で使われることが多い。それは単にベンチマークプログラムの結果を良くするだけではなく、一般のアプリケーションの性能も向上させるために使われている。 依然として製造業者はその製品が得意とする分野のベンチマーク結果のみを公表しているが、このような手法を「ベンチマーケティング」などと呼ぶこともある。しかし理想的なベンチマークとは、アプリケーションが利用できない場合や、特定のプロセッサやコンピュータシステムへの移植がコスト的に困難である場合などでの、実際のアプリケーションの代用としてあるべきである。パフォーマンスを重視するのであれば、ターゲットとなる環境でのアプリケーションスイートこそが唯一のベンチマークとなりうる。 ある特定の機能を果たすプログラムを書くときに複数の手法が存在した場合、どの手法が最も効率的かを知る上でベンチマークを取る。このときに使うベンチマークは次節以降で紹介される、既成のベンチマークソフトを使うのではなく、下に示すような調査項目を記録できる処理を作成し、それをプログラム中に埋め込んで実行し、計測する。 また、コンパイラの設定によっては同じソースでも実行効率が変わるので、この点を明らかにする際もベンチマークを取ってどれが最善か調べる。特に、多種のCPUアーキテクチャ上で実行されるプログラムを作っているならば、この作業は入念に行う価値がある。 主な調査項目: 特定の処理を終えるまでにかかる時間 特定の時間内に処理できた回数 メモリ消費量の推移 ディスクアクセスの頻度 ページングの回数・量 温度の推移 実際のプログラム ワープロソフト ユーザーのアプリケーションソフトウェア カーネル（基本的なベンチマーク） 基本的なコードを含む 一般に実プログラムから抽出されたコードを使う 典型例：リバモアループ (Livermore loop) linpack ベンチマーク（FORTRANで書かれた基本的な線形代数サブルーチンを含む） 結果は MFLOPS で表されることが多い 簡単なベンチマーク ユーザーがコンピュータの基本部品を評価するためにプログラムを書くことができる 合成ベンチマーク (Synthetic Benchmark) 合成ベンチマークを作成する手順 多くのアプリケーションを実行して操作の統計情報を得る 各操作の比率を割り出す その比率を元にプログラムを作成する 合成ベンチマークの例： Whetstone Dhrystone Dhrystone - 整数演算性能 Whetstone - 浮動小数点演算性能 SPEC - 総合性能、マルチプロセッサ性能 TPC-C - トランザクション性能 LINPACK - 浮動小数点演算性能 HDBENCH - CPU, RAM, HDD, グラフィック 3DMark - 3D総合性能 PCMark - CPU、グラフィック、RAM、HDD総合性能 Windows エクスペリエンス インデックス PassMark パフォーマンス テスト CrystalMark - CPU、グラフィック、RAM、HDD総合性能 CrystalDiskMark - HDD CINEBENCH - グラフィック BIOHAZARD 5 Benchmark - グラフィック Sandra - CPU、グラフィック、RAM、HDD総合性能 SYSmark - CPU、グラフィック、RAM、HDD総合性能 Unreal Tournament - グラフィック Final Fantasy XI Official Benchmark - 同名ゲームにおける動作性能（DirectX 8.1以上） Final Fantasy XIV Official Benchmark - 同名ゲームにおける動作性能（DirectX 9.0c以上） ドラゴンクエストX ベンチマークソフト - 同名ゲームにおける動作性能（DirectX 9.0c以上） 大航海時代Online - 同名ゲームにおける動作性能（DirectX 9.0c以上） DOOM3 - 同名ゲームにおける動作性能 F.E.A.R. - 同名ゲームにおける動作性能 サクラエディタ - 秋葉原で行われたAMDのイベントの際に置換機能を利用し、終了する時間を測定した。 N-bench - AMD配布のパーツ種目別に測定が可能なベンチマークソフト。 スーパーπ - 金田康正教授が開発した円周率計算プログラム。これを使ってCPUの速度を計測することを俗に「π焼き」と呼ぶ。 日本の自動車業界においては、他の分野と用法がやや異なり指標というよりも、目指すべき目標という意味で用いられる場合がほとんどである。そのため、完成度の高い自動車が「ベンチマーク」とされ、また、それを上回る自動車が発表されれば、その車が新たにベンチマークとされるので、頻繁に基準の変更が行われる。ただし、特に歴代で評価の高い自動車は他により優れた車があってもベンチマークとされやすく、Cセグメントではフォルクスワーゲン・ゴルフが、スポーツカーではポルシェが、ハンドリングではBMWが、軽自動車ではスズキ・ワゴンRがベンチマークとされることが多い。 このように、自動車業界において慣例的に使用されるベンチマークには明確な定義はほとんどなく、自動車評論家の評価などによって決められる曖昧なものとなっている。他社の自動車製品を分解・解析し、その仕組みやコスト構成を明らかにするリバースエンジニアリングは世界的に行われている。このベンチマーキングにより取得できる情報は営業秘密にはあたらないので、ライバル会社がこれを利用することは基本的に違法行為ではない。 なお、自動車における本来の意味でのベンチマークには以下のようなものが存在するが、逆にこれらがベンチマークと呼ばれることはあまりない。 10・15モード燃費 JC08モード NCAP 0 - 400 m（SS 1/4 mile）加速 0 - 1000 m加速 0 - 100 km/h（0 to 60 mph）加速 サーキットのコースレコード 最高速度記録 ^ https://www.clairlaw.jp/qa/it/information/post-40.html