297:: for example, code which uses the processor but produces internal results which are not used or output) make the use and design of synthetic benchmarks more difficult. Version 2.0 of the benchmark, released by Weicker and Richardson in March 1988, had a number of changes intended to foil a range of compiler techniques. Yet it was carefully crafted so as not to change the underlying benchmark. This effort to foil compilers was only partly successful. Dhrystone 2.1, released in May of the same year, had some minor changes and as of July 2010 remains the current definition of Dhrystone.
229:
25:
329:) can confound simple comparisons. For example, the same high-level task may require many more instructions on a RISC machine, but might execute faster than a single CISC instruction. Thus, the Dhrystone score counts only the number of program iteration completions per second, allowing individual machines to perform this calculation in a machine-specific way. Another common representation of the Dhrystone benchmark is the
301:
operations, which is largely language-related: both Ada and Pascal have strings as normal variables in the language, whereas C does not, so what was simple variable assignment in reference benchmarks became buffer copy operations in the C library. Another issue is that the score reported does not include information which is critical when comparing systems such as which compiler was used, and what optimizations.
304:
Dhrystone remains remarkably resilient as a simple benchmark, but its continuing value in establishing true performance is questionable. It is easy to use, well documented, fully self-contained, well understood, and can be made to work on almost any system. In particular, it has remained in broad
363:
It is susceptible to compiler optimizations. For example, it does a lot of string copying in an attempt to measure string copying performance. However, the strings in
Dhrystone are of known constant length and their starts are aligned on natural boundaries, two characteristics usually absent from
214:
benchmarks, meaning that they are simple programs that are carefully designed to statistically mimic the processor usage of some common set of programs. Whetstone, developed in 1972, originally strove to mimic typical Algol 60 programs based on measurements from 1970, but eventually became most
300:
Other than issues related to compiler optimization, various other issues have been cited with the
Dhrystone. Most of these, including the small code size and small data set size, were understood at the time of its publication in 1984. More subtle is the slight over-representation of string
364:
real programs. Therefore, an optimizer can replace a string copy with a sequence of word moves without any loops, which will be much faster. This optimization consequently overstates system performance, sometimes by more than 30%.
313:
standalone benchmark, HINT, Stream, and even
Bytemark are widely quoted and used, as well as more specific benchmarks for the memory subsystem (Cachebench), TCP/IP (TTCP), and many others.
289:
Dhrystone's eventual importance as an indicator of general-purpose ("integer") performance of new computers made it a target for commercial compiler writers. Various modern compiler
321:
Dhrystone may represent a result more meaningfully than MIPS (million instructions per second) because instruction count comparisons between different instruction sets (e.g.
207:
benchmark for floating point operations. The output from the benchmark is the number of
Dhrystones per second (the number of iterations of the main code loop per second).
344:
Another way to represent results is in DMIPS/MHz, where DMIPS result is further divided by CPU frequency, to allow for easier comparison of CPUs running at different
383:
benchmark was created in 1988 to include a suite of (initially 8) much larger programs (including a compiler) which could not fit into L1 or L2 caches of that era.
133:
454:
572:
393:
179:, assignments, etc. From this he wrote the Dhrystone benchmark to correspond to a representative mix. Dhrystone was published in
487:
89:
61:
276:
108:
258:
326:
567:
334:
141:
68:
254:
46:
172:
337:) obtained when the Dhrystone score is divided by 1757 (the number of Dhrystones per second obtained on the
75:
159:
With
Dhrystone, Weicker gathered meta-data from a broad range of software, including programs written in
250:
215:
popular in its
Fortran version, reflecting the highly numerical orientation of computing in the 1960s.
180:
175:. He then characterized these programs in terms of various common constructs: procedure calls, pointer
42:
57:
513:
447:
239:
184:
243:
35:
379:, thus not exercising data cache miss performance. To counter fits-in-the-cache problem, the
294:
204:
149:
129:
290:
375:
performance is not rigorously tested. Similarly, Dhrystone may also fit completely in the
8:
360:
It features unusual code that is not usually representative of modern real-life programs.
532:
148:) performance. The name "Dhrystone" is a pun on a different benchmark algorithm called
82:
483:
372:
368:
191:
developed by Rick
Richardson ("version 1.1") greatly contributing to its popularity.
536:
522:
422:
200:
153:
561:
545:
527:
508:
551:
176:
376:
345:
448:"Dhrystone Benchmark: History, Analysis, "Scores" and Recommendations"
399:
480:
Microcontrollers: Hardware and
Firmware for 8-bit and 32-bit devices
228:
24:
310:
305:
use in the embedded computing world, though the recently developed
168:
546:
Dhrystone
Benchmark: Rationale for Version 2 and Measurement Rules
380:
160:
137:
140:) programming. The Dhrystone grew to become representative of
306:
322:
188:
164:
418:
338:
145:
203:
operations, thus the name is a pun on the then-popular
509:"Dhrystone: A Synthetic Systems Programming Benchmark"
49:. Unsourced material may be challenged and removed.
559:
218:
356:Using Dhrystone as a benchmark has pitfalls:
477:
125:
394:Standard Performance Evaluation Corporation
367:Dhrystone's small code size may fit in the
257:. Unsourced material may be challenged and
482:. Società Editrice Esculapio. p. 66.
194:
526:
277:Learn how and when to remove this message
136:intended to be representative of system (
109:Learn how and when to remove this message
506:
441:
439:
573:Computer-related introductions in 1984
560:
436:
255:adding citations to reliable sources
222:
199:The Dhrystone benchmark contains no
47:adding citations to reliable sources
18:
13:
507:Weicker, Reinhold (October 1984).
14:
584:
500:
445:
210:Both Whetstone and Dhrystone are
227:
23:
460:from the original on 2011-07-26
351:
341:, nominally a 1 MIPS machine).
34:needs additional citations for
471:
412:
1:
405:
219:Issues addressed by Dhrystone
132:program developed in 1984 by
16:Computer benchmarking program
7:
554:(Reinhold P. Weicker, 1995)
552:DHRYSTONE Benchmark Program
548:(Reinhold P. Weicker, 1988)
429:→ wet stone → dry stone → d
387:
10:
589:
316:
514:Communications of the ACM
371:of a modern CPU, so that
295:elimination of dead code
195:Dhrystone vs. Whetstone
568:Benchmarks (computing)
528:10.1145/358274.358283
478:Franco Zappa (2017).
309:benchmark suite, the
293:techniques (such as
291:static code analysis
251:improve this section
43:improve this article
152:, which emphasizes
134:Reinhold P. Weicker
489:978-88-9385-022-3
373:instruction fetch
369:instruction cache
287:
286:
279:
142:general processor
119:
118:
111:
93:
580:
540:
530:
494:
493:
475:
469:
468:
466:
465:
459:
452:
443:
434:
416:
282:
275:
271:
268:
262:
231:
223:
114:
107:
103:
100:
94:
92:
51:
27:
19:
588:
587:
583:
582:
581:
579:
578:
577:
558:
557:
521:(10): 1013–30.
503:
498:
497:
490:
476:
472:
463:
461:
457:
450:
444:
437:
417:
413:
408:
390:
354:
319:
283:
272:
266:
263:
248:
232:
221:
197:
115:
104:
98:
95:
52:
50:
40:
28:
17:
12:
11:
5:
586:
576:
575:
570:
556:
555:
549:
542:
541:
502:
501:External links
499:
496:
495:
488:
470:
435:
410:
409:
407:
404:
403:
402:
397:
389:
386:
385:
384:
365:
361:
353:
350:
318:
315:
285:
284:
235:
233:
226:
220:
217:
201:floating point
196:
193:
154:floating point
117:
116:
31:
29:
22:
15:
9:
6:
4:
3:
2:
585:
574:
571:
569:
566:
565:
563:
553:
550:
547:
544:
543:
538:
534:
529:
524:
520:
516:
515:
510:
505:
504:
491:
485:
481:
474:
456:
449:
446:Weiss, Alan.
442:
440:
432:
428:
426:
420:
415:
411:
401:
398:
395:
392:
391:
382:
378:
374:
370:
366:
362:
359:
358:
357:
349:
347:
342:
340:
336:
332:
328:
324:
314:
312:
308:
302:
298:
296:
292:
281:
278:
270:
260:
256:
252:
246:
245:
241:
236:This section
234:
230:
225:
224:
216:
213:
208:
206:
202:
192:
190:
186:
182:
178:
174:
170:
166:
162:
157:
156:performance.
155:
151:
147:
143:
139:
135:
131:
127:
123:
113:
110:
102:
91:
88:
84:
81:
77:
74:
70:
67:
63:
60: –
59:
55:
54:Find sources:
48:
44:
38:
37:
32:This article
30:
26:
21:
20:
518:
512:
479:
473:
462:. Retrieved
430:
424:
414:
355:
352:Shortcomings
343:
330:
320:
303:
299:
288:
273:
264:
249:Please help
237:
211:
209:
198:
187:version for
177:indirections
158:
121:
120:
105:
96:
86:
79:
72:
65:
53:
41:Please help
36:verification
33:
346:clock rates
333:(Dhrystone
183:, with the
58:"Dhrystone"
562:Categories
464:2020-04-28
406:References
377:data cache
339:VAX 11/780
128:computing
69:newspapers
400:Geekbench
267:June 2021
238:does not
212:synthetic
205:Whetstone
150:Whetstone
130:benchmark
126:synthetic
122:Dhrystone
99:June 2021
455:Archived
433:rystone.
388:See also
311:CoreMark
169:ALGOL 68
537:9026014
427:etstone
381:SPECint
317:Results
259:removed
244:sources
167:, SAL,
161:FORTRAN
138:integer
83:scholar
535:
486:
396:(SPEC)
173:Pascal
171:, and
85:
78:
71:
64:
56:
533:S2CID
458:(PDF)
451:(PDF)
331:DMIPS
307:EEMBC
124:is a
90:JSTOR
76:books
484:ISBN
335:MIPS
327:CISC
325:vs.
323:RISC
242:any
240:cite
189:Unix
165:PL/1
62:news
523:doi
419:Pun
253:by
181:Ada
146:CPU
45:by
564::
531:.
519:27
517:.
511:.
453:.
438:^
421::
348:.
163:,
539:.
525::
492:.
467:.
431:h
425:h
423:w
280:)
274:(
269:)
265:(
261:.
247:.
185:C
144:(
112:)
106:(
101:)
97:(
87:·
80:·
73:·
66:·
39:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.