Dhrystone
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Dhrystone(どらいすとーん)は、1984年に Reinhold P. Weicker が開発した合成ベンチマークプログラムであり、システム(整数)プログラミングの性能に注目したベンチマークである。Dhrystone は、SPECint として知られている CPU89 ベンチマークが現れるまで、汎用プロセッサの性能を表すものとしてよく使われた。
Dhrystone ベンチマークは浮動小数点演算を含まない。実際、その名前は当時浮動小数点演算のベンチマークとして有名だったWhetstoneをもじったものである。ベンチマークが出力するのは一秒間のDhrystone数(メインループを一秒間に何回回ったか)である。
Whetstone も Dhrystone も「合成」ベンチマークである。つまり一般的なプログラムを統計的に分析して、その負荷を再現するよう注意深く設計された単純なプログラムである。Whetstone は 1976年に開発された。1970年ごろから一般的な ALGOL 60 のプログラムの負荷を再現するよう調整されていたが、FORTRANバージョンが一般化した。Whetstone は 1960 年代の数値演算の負荷を再現したものと言える。
Dhrystone では、Weicker は様々なプログラムから情報を集めた(FORTRAN、PL/1、SAL、ALGOL 68、Pascal)。そして、それらのプログラムの基本構造(プロシージャ呼び出し、ポインタ操作、代入など)を抽出した。そしてそこから得られた使用頻度を元にして Dhrystone ベンチマークを作成したのである。オリジナルの Dhrystone は Ada で書かれていた。UNIX向けの C言語版は Rick Richardson が開発し(バージョン 1.1)、Dhrystone の普及に大きく貢献した。
Dhrystone はコンピュータの性能指標としての地位を確立し、商用コンパイラ作者はこれを目標として技術を磨いていった。様々な手法(たとえば使われないコードを省く機能など)が開発され、合成ベンチマークの設計は困難になっていった。Weicker と Richardson が 1988年に開発したバージョン 2.0 では、そのようなコンパイラの技法の裏をかく大幅な改造がなされた。基本的なベンチマークとしての性格は残すよう、注意深くコーディングされている。コンパイラの裏をかくという目的は部分的にしか成功しなかった。同年の5月にリリースされた Dhrystone 2.1 が現在も使われ続けている。
コンパイラの最適化以外にも問題はある。その大部分は 1984年当時から指摘されていたことで、コードとデータのサイズが極めて小さいことも含まれる。もっと細かい話では文字列操作が言語に深く依存している点に問題があると言われている。Ada や Pascal は文字列を基本データ型としているが、C言語ではそうではない。従って、文字列変数への代入は C ライブラリでは単なるバッファのコピーになってしまう。
Dhrystone ベンチマークの測定値は DMIPS(Dhrystone million instructions per second)で表されることが多い。これは測定結果のDhrystone数を 1,757 で割ることで得られる(1757 は 1MIPSマシンと言われる VAX 11/780 の1秒あたりの Dhrystone 数)。
Dhrystone は単純なベンチマークとして根強く生き残っている。扱いやすく、文書もそろっていて、単独で使うことができ、どんなシステムでも測定可能だからである。特に組み込み市場ではよく使われているが、CPU89 が汎用のコンピュータ市場でその役割を奪ったように EEMBC ベンチマークが最近取って代わろうとしている。20年も使われ続けたのは Weicker の設計の良さと先見性を証明している。