SPEC

**SPEC** (*Standard Performance Evaluation Corporation*) on yleishyödyllinen yhteisö, joka tuottaa tietokoneiden suorituskykymittausohjelmia.

SPEC-testit toimitetaan lähdekoodina, jotka käännetään suoritettavalle alustalle. Mukana on useita suorituskykytestejä järjestelmän eri osia varten. Ohjelmointikielen kääntäjää muokkaamalla tai erikoisilla optioilla testaaja voi saada aikaan käännöksen, joka antaa korkeimman tuloksen testeissä, mutta todellisessa sovelluksessa vastaava aiheuttaisi virhetilanteen tai hitaammin toimivan ohjelman. SPEC92 antoi testaajalle vapaammat kädet eri käännösoptioille kuin SPEC95. Testaajan on myös ilmoitettava perustulos ja optimoitu tulos erikseen. Käännöksille on lisätty vaatimus, että ohjelman optimoinnin on tuotettava tarkoitukseen oikeaa koodia.

Tunnetuin *SPEC*in julkaisema testi on *SPECcpu* joka koostuu kokonaislukulaskennan suorituskykyä mittaavasta *SPECint*istä sekä liukulukulaskennan suorituskykyä mittaavasta *SPECfp*stä. 

SPECin julkaisemat testit koostuvat useista eri osatesteistä, joiden tulos yhdistetään lopulliseksi pistemääräksi geometrisellä keskiarvolla. Syynä geometrisen keskiarvon käyttöön on se, että näin testien välinen painotus säilyy samanlaisena riippumatta siinä, mikä niiden suoritusaika on; yksi todella hyvin tai todella huonosti mennyt testi ei pääse dominoimaan tulosta kuten kävisi aritmeettisella tai harmonisella keskiarvolla.

## Historia
SPEC:n perustivat nimellä *System Performance Evaluation Cooperative* pieni joukko työasemien valmistajia vuonna 1988. Valmistajat olivat havainneet tarpeen realistisille standardoiduille testeille. Perusteena oli, että pieni määrä luotettavaa tietoa olisi parempi kuin suuri määrä markkinointihypeä. SPEC on laajentunut ja sillä on 60 jäsenyhtiötä.

## SPECin julkaisemia testejä

### SPECcpu

SPECcpu mittaa tietokoneiden prosessoreiden suorituskykyä.

#### Versiot

SPECcpu-testeistä on tullut useita eri versioita, keskimäärin noin viiden vuoden välein, koska tietokoneilla ajettavat ohjelmat ovat muuttuneet ja prosessoitavien datojen koot ovat kasvaneet eivätkä vanhat versiot testeistä enää ole vastanneet tosielämän suorituskykyä riittävän hyvin. 

SPECcpun testien perusversiot eivät hyödynnä useaan prosessoriydintä vaan mittaavat vain yhden prosessoriytimen nopeutta.

#### SPECint

SPECint koostuu useasta eri tosimaailman koodeihin perustuvasta osatestistä, jotka eivät käytä liukulukuja. Osatestejä on mm. tiedon pakkauksesta, ohjelmointikielen kääntämisestä ja tulkkaamisesta sekä pelien tekoälyistä.

#### SPECfp

SPECfp koostuu useasta eri tosimaailman koodeihin perustuvasta osatestistä, joissa pääpaino on liukulukulaskennalla.
Suurin osa osatesteistä koostuu erilaisista tieteellisen laskennan sovelluksista.

SPECfp-testiä on arvosteltu siitä, että jotkut laitevalmistajat (mm. Sun Microsystems) ovat onnistuneet kehittämään kääntäjiinsä optimointeja, jotka parantavat selvästi tulosta jossain tietyssä SPECfpn osatestissä mutteivät auta juuri muiden ohjelmakoodien ajamisessa.

Toinen arvostelun aihe SPECfpssä on ollut että sen joidenkin versioiden käyttämän datan määrä on ollut jossain määrin keinotekoisesti ja epäluonnollisesti valittu ja muistikaistan ja välimuistin vaikutus suorituskykyyn on siten painottunut hiukan eri tavalla kuin tosielämässä.

#### specrate

SPECint- ja SPECint-testeistä on myös versiot SPECint_rate ja SPECfp_rate joissa ajetaan useaa SPECint- ja SPECfp-testiä rinnakkain koneen eri suorittimilla usean prosessorin suorituskyvyn laskemiseen.

### Viewperf

Viewperf mittaa tietokoneen suorituskykyä 3D-mallinnuksessa (mm. CAD-työasemat).

### SPECjvm

SPECjvm mittaa tietokoneen suorituskykyä Java-kielen tavukoodia ajattaessa.

## Katso myös
* LINPACK

## Lähteet

## Aiheesta muualla
* http://www.spec.org/