Dhrystone: A synthetic systems programming benchmark Reinhold P. Weicker CACM, Vol. 27, No. 10 October 1984, pg. 1013-1030 "Benchmark" * Single program * Reflects frequency of source language constructs in actual programs * And in compiled form, the frequency of machine language constructs * Will also measure quality of compiler Whetstone benchmark Curnow, H.J. and Wichman, B.A., A synthetic benchmark Computing Journal, Vol. 19, No. 1, February 1976, pg. 43-49 * Originally written in Algol, now FORTRAN * Reflects numerical computing, floating-point arithmetic * Statement type distribution was collected in 1970 * Constructs may be outdated * Does not consider locality of reference Dhrystone method * Synthetic benchmark based on actual usage of language features * System programming oriented Scientific programs * Floating point arithmetic * Operate on arrays * FORTRAN Business programs * Dominated by I/O activities * COBOL System programs * Enumeration, record and pointer datatypes * Ada, Pascal, C Frequency of statements * Static statistics + Assignment + Call - User procesures - Standard procedures + Return + If - With else - Without else + Loop with condition - While - Repeat + Loop with "for" + With + Case + exit loop + Goto + Other * Dynamic statistics (harder to collect) * Breakdown for assignment statements + Left-hand side - Variable - Array element - Record component - Other + Right-hand side - Constant - Variable - Array element - Function result - Record component - Other * Operator use (usually in assignments, can occur in other expressions, too) + Arithmetic: +, -, *, /, div, exponentiation, modulus + Comparison: ==, !=, >, <, >=, <= + Logic: AND, OR NOT + Other * Number of parameters (static and dynamic can vary widely) * Operand types + Different methods of counting + Final datatype on access path + First datatype encountered + All datatypes counted * Operand locality + Global + Local + Parameter + Constant Dhrystone distribution tables are given on page 1021.