Jõudlustest

**Jõudlustest** (inglise keeles *benchmark*) on arvutitehnikas protseduur riistvara või tarkvara arvutusjõudluse hindamiseks. 

Jõudlustestiks nimetatakse nii mõõtmist kui ka selleks kasutatavat programmi.

Riistvara puhul mõõdetakse tavaliselt sooritatud operatsioonide arvu ajaühikus, näiteks protsessori puhul ujukomaoperatsioonide arvu sekundis (FLOPS) ja mälu puhul loetud või kirjutatud andmete hulka sekundis. Riistvara jõudlustestid kasutavad jõudluse arvutamiseks tegelikke väärtusi ja annavad paremat tagasisidet kui seadme tehniliste näitajate järgi prognoositud tulemused. Jõudlustestid aitavad inseneridel paremini aru saada, kuidas riistvara tegelikult toimib ja kui hästi suudetakse antud parameetritega täita erinevaid ülesanded.

Jõudlustestide abil analüüsitakse sageli seadme komponentide maksimaalset suutlikkust. See aitab arendajatel paremini mõista süsteemi võimalikke kitsaskohti ja tuvastada neid põhjustav tark- või riistvara. Jõudlustesti kasutamine enne ja pärast seadme muutmist aitab kasutajal paremini mõista muutuste mõju seadme kiirusele.

## Eesmärgid
Arvuti arhitektuuri arenedes muutus seadmete võrdlemine tehniliste näitajate põhjal järjest keerulisemaks ja suurenes vajadus erinevate arhitektuuride omavahelist võrdlemist võimaldavate testide järele. Näiteks võrdse taktsagedusega protsessorite võrdlemine ei pruugi näidata sama jõudlust, kuna tegelik jõudlus sõltub paljudest asjaoludest, nagu tuumade arv, vahemälu suurus ja lõimede arv.

Samuti tehakse jõudlusteste komponentide mitmekülgse koormamise eesmärgil. Kuigi see on ennekõike koormustesti ülesanne, on jõudlustest hea esmase testimise vahend veendumaks, kas seade töötab korrektselt. Näiteks vead arvuti mälus või graafikakaardi draiverites võivad jõudlustesti käigus avalduda.

## Testitüübid
Jõudlustestid võib jagada kaheks: sünteetilised testid ja rakendustestid. Samuti leidub hübriide, mis võtavad lõpptulemuses arvesse mõlema liigi tulemusi. Jõudlustesti oluline osa on tulemuste võrreldavus, mille kohaselt peab testitulemusi olema võimalik omavahel tähendusrikkalt kõrvutada. Sama testi käivitamine identsel konfiguratsioonil ja erinevatel ajahetkedel peaks andma samasuguse või lähedase tulemuse. Ideaaltingimuste korral peaksid jõudlustesti tulemused olema võrreldavad mitte ainult sama seadme puhul, vaid sarnaseid tulemusi peaksid andma ka teised ligilähedased seadmed, mis kasutavad teistsugust arhitektuuri, operatsioonisüsteemi või riistvara.

Sünteetilised testid teostavad lihtsalt mõõdetavaid arvutusi, mida reaalses kasutuses praktiliselt ei esine. Testid on disainitud kergesti korratavateks üksikutel komponentidel, minimeerides ohtu, et süsteemis olev kitsaskoht mõjutab lõpptulemust. See muudab üksikute komponentide omavahelise võrdlemise kergeks, kuid ei tähenda üksiku komponendi tulemuse kajastumist tavakasutuses.

Rakendustestid imiteerivad rakenduste käitumist ja proovivad modelleerida kasutaja tegutsemist süsteemis. Test mõõdab kogu süsteemi käitumist määratud koormuse all ning mõõdab ülesande täitmise kiirust. Tulemus arvutatakse iga testitud lüli põhjal ning see aitab hinnata süsteemi kui tervikut, kuid ei anna teavet üksikute komponentide soorituse kohta. Sellise lähenemise suurim probleem on testi loojate definitsioon kasutaja tüüpilisest töökoormusest.

## Probleemid
Paljud tootjad on modifitseerinud oma tooteid nii, et need annaks koormustestide ajal ebarealistlikult kõrgeid tulemusi, mis igapäevases kasutamises ei kajastu. Näiteks on osad nutiseadmete tootjad muutnud oma telefone ja tahvelarvuteid kõrge tulemuse saavutamiseks nii, et need tuvastaks enamlevinud jõudlustestid ning tõstaksid testi läbiviimise ajal osade komponentide taktsagedust ja maksimaalset temperatuuritaluvust.

Ainult ühe testi tulemuste põhjal pole mõistlik seadme jõudluse kohta hinnanguid anda, sest see näitaja pole universaalne. Kuna jõudlusteste on palju, on tootjad suutelised leidma sellise, mis näitab nende tooteid paremast küljest. Objektiivseimat tulemust on võimalik saada testiga, mis koormab süsteemi sarnaselt tavakasutusele. Liigselt koormates võivad komponendid ülekuumenemise vältimiseks jõudlust vähendada ning liiga madala koormuse puhul ei pruugi tulemus kajastada süsteemi käitumist normaalkoormuse all.

## Tüüpilised testid
### Protsessor
* **Matemaatilised testid arvudega**. Kasutatakse enamiku tööriistade poolt, et mõõta protsessori võimet sooritada mitmeid jadamisi esitatud algelisi tehteid nagu liitmine, lahutamine, korrutamine ja jagamine suvaliselt genereeritud 32- ja 64-bitiste arvudega. Ujukomaarve ja täisarve testitakse protsessoris eraldi ning saadud tulemusi esitatakse sageli millisekundites, seega väiksem number näitab paremat tulemust.
* **Pakkimistestid**. Need testid mõõdavad protsessori võimekust pakkida suuri andmeplokke ilma, et protseduuri käigus infot kaduma läheks. Pakkimise ajal kasutatakse keerukaid andmestruktuure ning keerulisi andmemanipulatsiooni võtteid, mis on levinud igapäevastes tarkvararakendustes, alates andmete varundamisest ja lõpetades e-postiga. Tulemused kuvatakse tavaliselt kilobaitides sekundi kohta (kB/s).
* **Testid üksiku tuumaga**. Kasutatakse ainult ühte protsessori tuuma ja hinnatakse selle toimetulekut erinevates testides. Kahjuks ei oska paljud programmid isegi praegu efektiivselt kasutada protsessori mitmetuumalisust ning üksiku tuuma hea jõudlus on sageli hädavajalik.

### Graafikakaart
* **2D-graafika**. Kahemõõtmelised graafikatestid keskenduvad ekraanile joonistamisele, elementide liigutamisele, fontidele ja kasutajaliidese skaleerimisele. Tulemused esitatakse kaadrisageduse abil, mis tähendab kuvatavate kaadrite arv sekundis. Mida suurem on tulemuseks saadud väärtus, seda sujuvam tundub ekraanil olevate objektide liikumine.
* **3D-graafika**. Väga tähtis test videomängude ja digitaalse meediaga tegelevate süsteemidele. Testid hõlmavad mitme eri keerukusega 3D-objekti renderdamist ekraanile. Muudetakse kuvatava stseeni detailsust, varje, valgustus ja testitakse erinevaid API-sid nagu DirectX ja OpenGL. Nagu 2D-graafika puhul esitatakse tulemused sageli kasutades kaadrisagedust.

### Andmekandja
* **Järjestikused testid**. Andmekandjatega sooritatavad testid keskenduvad sageli järjestik-lugemis- ja kirjutamistestidele. Sõna "järjestik" viitab failile, mis pole salvestatud mitme fragmendina, vaid mis on ühe suure tükina, näiteks suur fail salvestatud fragmentimata kõvakettale. Tulemused kuvatakse tavaliselt megabaite sekundis (MB/s).
* **Juhuslikud testid**. Need testid näitavad, kuidas andmekandja käitub kui sel on vaja juurdepääsu paljudele andmetele, mis asetsevad ketta peal suvalistes asukohtades. Juhuslikud lugemis- ja kirjutamiskiirused on andmete ebatõhusa paiknemise tõttu oluliselt aeglasemad kui järjestikused lugemis- ja kirjutamisoperatsioonid.

## Levinud jõudlustestid
### Super PI

Super PI on sünteetiline ühelõimeline protsessori jõudlustest, mis arvutab pii väärtust kasutaja määratud täpsusastmeni ja toetab kuni 32 miljonit komakohta. Test kasutab arvutusmahukat Gaussi-Legendre'i algoritmi ja on vabavara.
### Geekbench
Geekbench kasutab protsessori jõudluse mõõtmiseks mitmesuguseid teste ja töökoormusi. Sooritatavad testid on jaotatud kolme kategooriasse. Täpse nimekirja sooritatavatest testidest koos seletustega leiab siit. 
### 3DMark
3DMark on populaarseim test graafilise jõudluse hindamiseks. Testi tulemus moodustatakse graafika, füüsika ja kombineeritud stseeni tulemuste harmooniliset keskmisest. Testi toetab internetis asuv ja pidevalt täienev andmebaas, mis sisaldab üle 35 miljoni 3DMarki tulemuse. Andmestik annab kasutajale võimaluse võrrelda enda tulemusi sarnaste riistvarakonfiguratsioonidega. Programmi kasutavad paljud meediaväljaanded graafikakaartide testimiseks ja test annab hea võrdluspunkti kasutajale, kes soovib oma süsteemi uuendada.

### CrystalDiskMark
CrystalDiskMark on mitmekülgne ja kergesti kasutatav vabavaraline andmekandjate töökiiruse test, mis võimaldab käivitada nii järjestik-lugemis- ja kirjutamisteste kui ka juhu-lugemis- ja kirjutamisteste ning väljastab mõõtmistulemused ühikutega MB/s ja IOPS.

## Vaata ka

## Viited