Whetstone este un punct de referință sintetic pentru computere. [1] Scrisă inițial în noiembrie 1972 în limbajul de programare Algol 60 la National Physical Laboratory din Marea Britanie, pe baza statisticilor de comportament ale programului obținute pe computerul KDF9 folosind un compilator modificat Whetstone Algol 60. Statisticile despre comportamentul programului reflectă problemele științifice tipice rezolvate de KDF9 . Compilatorul Whetstone a fost construit de divizia de putere atomică a English Electric din Whetstone , Leicestershire , [2] după care își ia numele. Ultimul computer KDF9 a fost oprit în 1980, dar este posibil să rulați testul original pe un emulator.
Versiunea Fortran a benchmark-ului (FOPR12 și FOPR13) a fost primul benchmark de uz general utilizat pe scară largă. Acesta a fost dezvoltat de Harold Curnow de la Unitatea de Suport Tehnic al Trezoreriei HM (TSU - ulterior parte a Agenției Centrale de Calculatoare și Telecomunicații - CCTA ). Această versiune a fost dezvoltată în continuare de Roy Longbottom, tot de la TSU/CCTA.
Testul de referință Whetstone măsura inițial performanța în unități de kilo-Whetstone instrucțiuni pe secundă (kWIPS, mii de instrucțiuni Whetstone pe secundă). Mai târziu, MWIPS a devenit unitatea standard - milioane de astfel de instrucțiuni pe secundă. Rezultatele istorice pentru diferite minicalculatoare , mainframe și supercomputere sunt publicate pe site-ul web Whetstone Benchmark History and Results . Se indică, de asemenea, anul de fabricație a sistemelor și costul acestora. Pentru comparație, sunt date câteva rezultate obținute pe computerele personale: Rezultate detaliate pe PC-uri .
Există versiuni de cod sursă pentru PC în C / C++ , Basic , Visual Basic , Fortran , Java , publicate pe site-ul Roy Longbottom PC Benchmark Collection . Au fost pregătite și programe compilate pentru DOS , OS/2 , Windows .
Whetstone măsoară în primul rând performanța aritmeticii în virgulă mobilă. Un punct de referință similar pentru operațiunile cu întregi și șiruri este Dhrystone .
Testul este foarte simplu, constând din doar 150 de instrucțiuni cu 8 bucle active, dintre care trei rulează în subrutine. Este testată performanța aritmeticii în virgulă mobilă, a apelurilor de funcții, a atribuirilor, a lucrului cu numere în virgulă fixă, a ramurilor. Cea mai complexă buclă, care rulează între 30 și 50% din timp, efectuează calcule în virgulă mobilă și un apel de subrutină.
Este folosită o cantitate foarte mică de date, care se încadrează în întregime în memoria cache L1 a majorității procesoarelor. Astfel, viteza cache-ului și a memoriei de al doilea nivel nu afectează performanța rezultată. Rezultatul testului este proporțional cu frecvența procesorului.
Codul a fost conceput în așa fel încât compilatorii să nu-l poată optimiza. Cu toate acestea, nu s-a luat în considerare faptul că compilatorii pot inline funcții la punctul de apel (optimizare inline). Cu utilizarea compilatoarelor moderne, viteza de execuție a testului este aproximativ dublată datorită selecției inline, a instrucțiunilor și eliminării transferurilor intermediare prin memorie.