Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Interesant
  • Două plăci video medii în loc de un top. Resursa informatică U SM

Două plăci video medii în loc de un top. Resursa informatică U SM

A trecut destul de mult timp de la lansarea sistemului de operare Microsoft Windows Vista și API-ul DirectX 10 actualizat ca parte a acestuia. Aplicațiile de joc cu suport pentru noua versiune a Direct3D 10 apar treptat, totuși, deși acestea sunt doar aplicații D3D 9 ușor modificate, nu folosesc în mod activ noile caracteristici ale D3D 10. Și chiar și acele jocuri care au fost deja lansate surprind cu rezultate polare pe plăcile video ale celor doi producători principali de cipuri, desigur, le puteți folosi în această formă pentru comparație, dar aveți mare grijă...

Abundența pachetelor de sintetice și teste de joc cu suport pentru Direct3D 10, de asemenea, nu este observat încă, același Futuremark nu a lansat un alt 3DMark. Dar site-ul are propriul pachet teste sintetice, și plănuim să actualizăm RightMark3D de mult timp pentru a putea evalua performanța de vârf a acceleratoarelor D3D10 în diferite sarcini. Versiunea finală a RightMark3D 2.0, concepută pentru acceleratoarele compatibile Direct3D 10 pe sistemul de operare MS Windows Vista, a apărut recent și imediat începem să-l folosim în materialele noastre.

Unele teste cunoscute anterior din pachetul actualizat au fost rescrise pentru DX10, au fost adăugate noi tipuri de teste sintetice: teste modificate pixel shader rescrise pentru SM 4.0, teste geometry shader, teste text fetch din vertex shader. Acest articol va fi primul pe RightMark3D 2.0, include un set mare de plăci video testate, apoi vom începe să folosim noul test în materialele noastre de bază.

Trebuie remarcat faptul că toate testele noastre sunt pur sintetice, de obicei folosesc doar anumite blocuri ale cipul video, impactul asupra performanței restului este redus în mod deliberat la minimum. În toate testele, procesorul central nu este implicat, totul este considerat exclusiv de cipul video. Să începem testele mult așteptate DirectX 10!

Condiții de test

Versiunea pachetului de teste sintetice RightMark3D 2.0 folosită de noi cu o scurtă descriere a testelor este disponibilă pentru descărcare (4,5 MB)

RightMark3D 2.0 necesită pachetul instalat DOMNIȘOARĂ Studio vizual 2005 runtime și cel mai recent Actualizare DirectX timpul de rulare.

Notă: captura de ecran arată o versiune specială a RightMark3D 2.0 cu posibilitatea de a testa în modul lot. Este destinat pentru uz casnicși va fi disponibil ulterior.

Configurația bancului de testare:

  • Computer pornit Bazat pe Intel Core 2 Duo (priză 775)
    • procesor Intel Core 2 Duo Extreme X6800 (2930 MHz) (L2=4096K);
    • Placa de baza EVGA nForce 680i SLI activata chipset Nvidia nForce 680i;
    • RAM 2 GB DDR2 SDRAM Corsair 1142MHz (CAS (tCL)=5; întârziere RAS către CAS (tRCD)=5; Row Precharge (tRP)=5; tRAS=15);
    • hard disk WD Caviar SE WD1600JD 160GB SATA;
    • unitate de alimentare Tagan 1100-U95 (1100W).
  • sala de operatie sistem Windows Vista Ultimate pe 32 de biți; DirectX10;
  • monitor Dell 3007WFP (30").
  • Driverele ATI CATALYST versiunea 8.3891; Nvidia ForceWare versiunea 158.45.

Testele sintetice au fost efectuate pe plăci video:

  • RADEON HD 2900XT cu parametri standard
  • RADEON HD 2600XT cu parametri standard
  • RADEON HD 2600 PRO cu parametri standard (versiunea cu memorie video GDDR3)
  • RADEON HD 2400XT cu parametri standard
  • Geforce 8800 Ultra cu parametri standard
  • Geforce 8800 GTX cu parametri standard
  • Geforce 8800 GTS cu parametri standard (versiunile cu 320 și 640 MB de memorie video arată performanțe apropiate)
  • GeForce 8600 GTS cu parametri standard
  • GeForce 8600 GT cu parametri standard
  • GeForce 8500 GT cu parametri standard

Pentru a compara plăcile video între ele, vom folosi perechi de modele AMD și Nvidia care coincid în poziționarea pe piață: HD2900XT - GF8800GTS, HD2600XT - GF8600GT, HD2600PRO - GF8500GT. Unele dintre plăcile video nu sunt încă pe piață și dacă sunt preturi reale va fi diferit, este necesar să se facă modificări la concluziile articolului. De asemenea, prețurile fluctuează constant, iar multe dintre concluziile articolului sunt valabile doar pentru perioada în care a fost publicat. Desigur, acest lucru nu se aplică comparației teoretice a jetoanelor junior și senior ale aceleiași companii, evaluarea performanței lor relative nu depinde de prețuri.

Descrieri și rezultate ale testelor

Vă reamintim că rezultatele testelor sintetice ale arhitecturilor DirectX 10 unificate trebuie analizate cu atenție, deoarece încărcarea acestora se bazează adesea doar pe unul sau două tipuri de shadere: vertex, geometrie, pixel. Și dacă pe o arhitectură convențională, cu o sarcină echilibrată pe toate blocurile enumerate, performanța nu scade, atunci pe o arhitectură unificată, munca totală va cădea asupra tuturor deodată, iar viteza de randare va scădea.

Teste PS 4.0 pixel shader (texturare, buclă)

Noua versiune a RightMark3D 2.0 folosită în acest articol include două teste deja familiare nouă de la PS 3.0, cel mai dificil dintre testele noastre sintetice Direct3D 9 pixel shader, precum și două teste complet noi. Primele au fost rescrise pentru DirectX 10, au adăugat, de asemenea, auto-umbrire și capacitatea de a activa supraeșantionarea, ceea ce mărește și mai mult încărcarea deja considerabilă a cipurilor video.

  • Blană- shader procedural care reda blana
  • Cartografierea paralaxei abrupte- o tehnică „grea” de cartografiere a paralaxei, nefolosită încă în jocuri, descrisă anterior în articol

Aceste două teste măsoară performanța executării pixel shader-urilor cu cicluri, cu un număr mare de texturi fetches (în modul cel mai greu, până la câteva sute de fetches per pixel!) și o încărcare ALU relativ mică. Cu alte cuvinte, ei măsoară viteza de preluare a texturii și eficiența ramificării în pixel shader.

Blana va fi primul nostru test de pixel shader. Cel mai mult setări scăzute folosește 15 până la 30 de mostre de textură din harta înălțimii și două mostre din textura principală. Detaliul efect - modul „Înalt” crește numărul de mostre la 40-80, includerea supereșantionării „shader” - până la 60-120 de eșantioane, iar modul „Înalt” împreună cu SSAA este caracterizat de „greutatea” maximă. - de la 160 la 320 de mostre de pe harta înălțimii. Arata cam asa:

Un test foarte dificil, chiar și judecând doar după descriere. Să vedem cum se descurcă toate plăcile video DirectX 10 disponibile pentru noi. Să verificăm mai întâi modurile fără supraeșantionarea activată, acestea sunt relativ simple, iar raportul rezultatelor în modurile „Scăzut” și „Înalt” ar trebui să fie aproximativ același.

Primele teste de redare procedurală a blănii cu preluări multiple de texturi de la shadere complexe cu cicluri arată un avantaj uriaș al plăcilor video Nvidia față de soluțiile AMD. Chiar și cipurile Nvidia de gamă medie arată rezultate la fel cu soluția de top de la AMD, ca să nu mai vorbim de cardurile bazate pe cipuri G80, care nu au concurenți deloc. Deci, conform acestui test, toate soluțiile Nvidia sunt mai rapide decât plăcile lor video AMD corespunzătoare. Având în vedere că un astfel de decalaj nu ar trebui să existe teoretic, se poate presupune că în rezultatele scăzute ale AMD în într-o mare măsurășoferii răi sunt de vină.

Numerele afișate în moduri diferite, se corelează bine între ele - rezultatele în „Ridicat” sunt de aproximativ o dată și jumătate mai mici decât în ​​„Scăzut”. În ceea ce privește raportul de performanță dintre cardurile de top-end și cardurile mid-range, putem spune că reducerea unităților de execuție lovește destul de greu jetoanele mid-range și mid-range. niveluri inferioare pentru ambii producători, acest lucru se aplică în special soluțiilor Nvidia (și AMD, dacă presupunerea despre deficiențe versiunile curente driverul este corect) - G84 este de trei ori în spatele lui G80, iar G86 arată un rezultat de două ori mai mic. Judecând după aceste cifre, performanța acestui test depinde nu numai de numărul și viteza TMU-urilor, altfel diferența ar fi mai mică.

Să ne uităm la rezultatul aceluiași test, dar cu supraeșantionarea „shader” activată, ceea ce crește volumul de lucru de patru ori mai mult:

O astfel de complexitate a testului este posibilă numai pentru cipurile de top, valorile afișate ale ratei de cadre pe secundă vorbesc elocvent despre acest lucru. În general, imaginea pare să fie aproximativ aceeași ca în cazul precedent, dar se vede clar că, pe măsură ce complexitatea shader-ului și încărcarea pe cipul video cresc, soluțiile AMD încep să ajungă din urmă cu plăcile video Nvidia. GeForce 8600 nu-l mai depășește pe HD 2900 XT, deși este aproape de acesta, iar GeForce 8500 GT chiar începe să piardă puțin față de concurentul său din gama de preț - HD 2600 PRO.

Activarea supraeșantionării crește teoretic încărcarea de exact de patru ori, dar pe plăcile video din familia G8x reduce viteza de mai mult de 5 ori, iar pe R6xx - doar cu puțin peste 3, datorită faptului că acestea din urmă în astfel de condiții obțin rezultate relative îmbunătățite . Cel mai probabil, cu rafinarea adecvată a driverelor, Nvidia va putea reduce scăderea performanței atunci când SSAA este activat, dar AMD are și oportunități similare de îmbunătățire...

Al doilea test care măsoară performanța executării pixel shaders complexe cu cicluri cu un număr mare de texturi este Steep Parallax Mapping. La setări scăzute, utilizează 10 până la 50 de mostre de textură din harta de înălțime și trei mostre din texturile principale. Când activați modul greu cu auto-umbrire, numărul de eșantioane se dublează (de la 20 la 100), supraeșantionarea de patru ori acest număr (de la 40 la 200 de mostre). Cel mai dificil modul de testare cu supraeșantionare și auto-umbrire utilizează 80 până la 400 de mostre de textură, adică de opt ori mai multe decât modul simplu.

Același lucru - verificăm mai întâi opțiunile simple fără supraeșantionare:

Al doilea test este mai interesant din punct de vedere practic, deoarece variațiile de cartografiere a paralaxei sunt deja folosite în jocuri, iar variațiile grele, cum ar fi maparea noastră abruptă de paralaxă, vor fi utilizate în curând în ele. Și în acest test, pe lângă supraeșantionare, puteți activa auto-umbrirea, care dublează aproximativ sarcina pe cipul video. Acest mod se numește „High”, iar cel obișnuit se numește „Low”.

În testele noastre de cartografiere paralaxă Direct3D 9, soluțiile ATI (și apoi AMD) au fost în mod tradițional puternice, de data aceasta nu au câștigat, dimpotrivă, fără supersampling activat, cipurile Nvidia fac față sarcinii mai repede. Observăm imediat o scădere puțin mai mare a performanței la trecerea de la modul „Scăzut” la „Ridicat” pentru plăcile video AMD. Schimbarea rezultatelor atunci când auto-umbrirea este activată pentru soluțiile Nvidia este de aproximativ 1,5 ori, iar pentru AMD - de mai mult de două ori. Datorită acestui fapt, rezultatele în modul „High” pentru acesta din urmă sunt relativ scăzute. În general, conform rezultatelor testelor, putem remarca încă o dată victoria soluțiilor Nvidia în toate intervalele de preț, câștigul în segmentul superior fiind deosebit de remarcat.

Chipurile din intervalele de preț medii și inferioare din acest test arată aproximativ la fel sau puțin mai bine: cele din mijloc rămân în urmă cu cele de mai sus de mai mult de două ori, iar cele mai slabe sunt în urmă cu aceeași sumă în urma celor medii. Să vedem ce va schimba includerea supersamplingului, în ultimul test a provocat o scădere mai mare a vitezei pe Nvidia, iar acest lucru poate îmbunătăți poziția plăcilor AMD.

Cifrele FPS arată încă o dată complexitatea sarcinilor noastre chiar și pentru soluții de vârf. Priviți FPS-ul rezultat cu supereșantionarea și auto-umbrirea activate (ultimul grafic), activarea acestora împreună crește încărcarea de aproape opt ori, provocând o scădere catastrofală a performanței. Diferența dintre viteza plăcilor video de la diferite segmente de preț este salvat.

Activarea supraeșantionării are aproape același efect ca în cazul precedent - cardurile bazate pe cipuri AMD R6xx își îmbunătățesc performanța față de Nvidia G8x. E ciudat că Nvidia a primit o scădere de 4 ori (egal cu teoretic), în timp ce AMD - doar de 3 ori. În ciuda acestui fapt, AMD nu reușește să câștige în general, cu excepția faptului că în segmentul de preț mai mic GeForce 8500 GT (G86) pierde de obicei în fața HD 2600 PRO (RV630). În perechile rămase, afirmăm o altă victorie pentru soluțiile Nvidia.

Teste PS 4.0 Pixel Shader (Computing)

Următoarea pereche de teste pixel shader conține un minim de preluări de textură, acest lucru se face pentru a reduce influența vitezei unităților TMU asupra vitezei generale. Cu toate acestea, se utilizează un număr foarte mare operatii aritmetice(sin, cos, exponentiație etc.). Aceste teste măsoară exact performanța matematică a cipurilor video, viteza de execuție a instrucțiunilor aritmetice în pixel shader. Influența tuturor celorlalte unități de execuție este redusă la minimum.

Primul test de matematică este Mineral. Poate fi numit un test de texturare procedurală complexă, folosește doar două mostre de date de textură și 65 de instrucțiuni sin și cos, în total mai mult de o mie de instrucțiuni per pixel.

În conformitate cu rezultatele cercetării noastre folosind versiunea anterioară a testelor sintetice Direct3D 9, în probleme complexe din punct de vedere computațional Arhitectura AMD funcționează foarte bine, toate soluțiile lor sunt înaintea concurenței. Dar Nvidia G8x nu este departe. Da, soluțiile AMD sunt mai rapide în toate segmentele de preț, dar în high-end, cel mai important strategic, lead-ul este mic, mai ales având în vedere că Nvidia are și soluții mai scumpe. Aici, în segmentele inferioare și mijlocii, soluția bazată pe cip G86 nu poate rezista atacului RV630 inferior și corespunde aproximativ cu soluția bazată pe RV610 și varianta rapida bazat pe G84 rămâne în urmă RV630 de top. Per total, având în vedere prețurile reale și estimative ale tuturor soluțiilor, AMD câștigă de data aceasta.

Performanța soluțiilor mid-range de la ambii producători în acest test este de aproximativ două ori mai mică decât viteza celor mai apropiate de top, cipurile low-end funcționează chiar de două ori mai rău. Raportul tradițional este observat din nou și din nou, în deplină concordanță cu reducerea din punct de vedere teoretic, ținând cont de frecvențele de ceas. În general, nu totul este atât de rău cu cipurile DirectX 10 de la nivelurile medii și inferioare... Deși, în orice caz, nu vorbim despre setări maxime viitoarele jocuri D3D 10, cărțile de ultimă generație vor avea dificultăți în ele.

Al doilea test al acestui bloc se numește Foc și este și mai dificil pentru ALU. Are o singură textură, dar numărul instrucțiunilor sin și cos a fost crescut la 130, mai mult de o mie de instrucțiuni în total.

Să vedem ce s-a schimbat odată cu creșterea sarcinii:

Observăm imediat că o comparație completă în testul Fire nu funcționează - există o eroare evidentă în driverele AMD, care nu permite produselor lor să arate rezultate corespunzătoare puterii reale. Înainte de a trage concluzii, să așteptăm remedieri în drivere.

Diferența dintre versiunea mai tânără a G80 și cea mai veche G84 s-a dovedit încă o dată a fi de puțin mai mult de două ori, ceea ce corespunde aproximativ diferenței de frecvențe și numărului de unități de execuție. Același lucru este valabil și pentru cip-ul low-end al Nvidia.

Teste geometrie shader

Pachetul RightMark3D 2.0 include două teste de viteză pentru geometrie shader conditii diferite. Prima opțiune se numește „Galaxy”, tehnica este similară cu „punct sprites” de la Versiuni anterioare Direct3D. Animă un sistem de particule pe GPU, un shader geometric din fiecare punct (de la 0,5 la 2,0 milioane în total) creează patru vârfuri care formează o particulă (expansiune quad). Aparent, astfel de algoritmi vor fi folosiți pe scară largă în viitoarele jocuri DirectX 10, așa că rezultatele prezentate în test sunt deosebit de interesante.

Este important de reținut că schimbarea echilibrului în testele noastre de umbrire geometrie nu schimbă rezultatul vizual, în ambele cazuri imaginea finală este exact aceeași, se schimbă doar metodele de procesare a scenei. Parametrul „GS load” determină în ce shader sunt efectuate calculele - în vârf sau geometrie, dar numărul de calcule în ambele cazuri este același.

Să luăm în considerare prima versiune a testului „Galaxy”, cu calcule în vertex shader, pt trei niveluri complexitate geometrică:

Se poate observa că raportul vitezelor pentru diferite complexități geometrice a scenelor s-a dovedit a fi aproximativ același pentru toate condițiile, doar valorile absolute diferă. Performanța arătată de toate soluțiile corespunde pe deplin numărului de puncte, cu fiecare pas, scăderea FPS este de aproximativ două ori. Plăcile video Nvidia se simt puțin mai bine în astfel de condiții, arătând rezultate mai bune la toate perechile comparate: GeForce 8800 GTS este mai rapid decât HD 2900 XT, GeForce 8600 GT este mai rapid decât HD 2600 XT, GeForce 8500 GT este mai rapid decât HD 2600 PRO. Diferența este mică, dar există.

Sarcina nu este atât de dificilă pentru plăci video moderne, soluțiile de top au depășit ușor plăcile video mid-range, diferența nu ajunge nici măcar de două ori. Deși game-urile sunt în urmă cu cele medii de la fel de două ori. Poate că, atunci când se transferă o parte din calcule în shaderul geometriei, situația se va schimba, ca atunci când se compară soluții diferiți producătoriși segmente de preț. Acum o vom verifica.

Într-adevăr, au existat unele schimbări. Acum, soluțiile bazate pe cipuri G8x nu depășesc întotdeauna soluțiile bazate pe R6xx în toate cazurile cu sumă diferită geometrie. Deși GeForce 8600 GT este încă înaintea RADEON HD 2600 XT, iar GeForce 8500 GT este puțin înaintea HD 2600 PRO, placa video de top de la AMD preia conducerea. Este interesant că nu există aproape nicio diferență între numerele Geforce 8800 GTX și GTS, deși numărul de unități de execuție active pentru aceste cipuri este diferit. Drept urmare, AMD continuă să piardă, ceea ce este puțin ciudat, având în vedere eficiența ridicată a execuției vertex shader de către cipurile lor observată în testele noastre anterioare. Să vedem, poate rezultatul se va schimba la al doilea test...

„Hyperlight” este cel de-al doilea test de umbrire de geometrie din noua versiune a RightMark3D, care demonstrează utilizarea mai multor tehnici interesante simultan: instanță, ieșire de flux, încărcare tampon. Folosește creație dinamică geometrie prin desen în două buffer-uri, acest test folosește și noua oportunitate DX10 - ieșire flux. Primul shader folosit generează direcția razelor, viteza și direcția de creștere a acestora, aceste date sunt plasate într-un buffer, care este folosit de al doilea shader pentru randare. Pentru fiecare punct al fasciculului, într-un cerc sunt construite 14 vârfuri, în total până la un milion de puncte de ieșire.

Un nou tip de program de umbrire este folosit pentru a genera „raze”, iar cu parametrul „GS load” setat la „Heavy” - și pentru a le desena. Adică, în modul „Echilibrat”, umbritoarele de geometrie sunt utilizate numai pentru a crea și „crește” raze, ieșirea se realizează folosind „instanțare”, iar în modul „Gre”, shaderul de geometrie este, de asemenea, implicat în ieșire. . Să ne uităm mai întâi la modul ușor:

Rezultatele diferitelor plăci video practic nu diferă unele față de altele, indiferent de complexitatea geometrică a scenei. Performanța se scalează bine și aproape corespunde parametrilor teoretici, conform cărora fiecare nivel următor de „Număr de poligon” ar trebui să fie de două ori mai lent.

Marele avantaj al plăcilor video Nvidia se observă și de această dată, când încărcarea pe geometry shaders nu este atât de mare. RADEON HD 2900 XT este depășit chiar și de Geforce 8600 GT, iar soluția inferioară a Nvidia este cu puțin înaintea HD 2600 XT. Nu merită să vorbim despre G80 - sunt cu mult înainte, iar performanța lor este clar limitată de altceva, deoarece nu câștigă prea mult în comparație cu G84.

Interesant este că performanța HD 2400 XT este aproape egală cu cea a HD 2600 PRO, iar ambele cifre sunt cu mult în urma HD 2600 XT, ceea ce nu era cazul în trecut. Toate aceste numere se pot schimba în următorul nostru test, unde umbritoarele de geometrie sunt utilizate și mai activ. Va fi deosebit de interesant să comparăm numerele obținute în modurile „Echilibrat” și „Gre” între ele.

De acord, situația s-a dovedit cu totul diferită! Putem spune clar că cipurile din seria AMD R6xx execută această muncă mult mai rapid decât cipurile Nvidia G8x, având un avantaj de 2 ori sau chiar mai mult. Performanța acestor teste depinde foarte mult de complexitatea lucrării pentru geometrie shaders. Cipurile AMD fac mai mult decât funcționează decizii mai rapide Nvidia, odată cu complexitatea geometriei, această diferență crește. Se pare că, cu cât munca pentru geometrie shader este mai dificilă, cu atât R6xx va fi mai rapid în comparație cu G8x.

Dar, comparând rezultatele în diferite moduri, atunci când în ieșire sunt implicate diferite tipuri de shadere, trebuie remarcat că rezultatele Nvidia în Balanced s-au dovedit mai bune decât cele ale AMD în Heavy. În ciuda faptului că imaginea afișată nu diferă. Acest lucru îi amenință încă o dată pe dezvoltatorii de aplicații 3D cu faptul că vor trebui să își optimizeze codul pentru două astfel de arhitecturi diferite pentru a obține performanțe maxime de la ambele.

La trecerea de la folosirea „instanțelor” la un geometry shader la ieșire, plăcile video Nvidia pierd mult din performanță, de la 2 la 6 ori. Mai mult, cu cât cip este mai tânăr, cu atât diferența de viteză de redare dintre cele două moduri este mai mare. AMD are opusul, rezultatele în modul de utilizare a unui shader geometric pentru ieșire sunt mai mari decât la „instanțare”, deși nu uneori. Se dovedește că geometry shaders în sine funcționează mai bine pe cipurile AMD cu o creștere a muncii (numărul de vârfuri generate), dar realitatea diferă de testele sintetice prin faptul că dezvoltatorii sunt liberi să-și aleagă propria cale și dacă folosesc vertex shadere pentru sarcinile este mai profitabilă, ei pot face acest lucru.

Diferența dintre viteza în modurile „Echilibrat” și „Gre” pentru diferite jetoane din aceeași linie este, de asemenea, extrem de curioasă. Situația amuzantă cu compararea HD 2400 XT și HD 2600 PRO s-a înrăutățit - acum cipul mai tânăr îl depășește chiar pe cel mai vechi. Și „vinovat” aici, cel mai probabil, mai mult frecventa inalta decizia pentru juniori și configurarea triunghiului cu limita de viteză. Nvidia nu vede acest lucru, toate cipurile au arătat rezultate strict conform liniei - G84 este de 2-3 ori mai lent decât G80, iar G86 este de 4-6 ori mai lent. HD 2600 PRO este un alt mister care nu poate fi explicat – doar că această placă video produsă de AMD pierde performanță la schimbarea modului de la „Echilibrat” la „Gre” într-un mod cu multă geometrie.

De remarcat, de asemenea, există un bug în driverele AMD, care apare doar pe HD 2900 XT, determinând absența unei imagini afișate în cel mai dificil mod al testului „Hyperlight” și anormal. cel mai mare scor care nu poate fi considerat corect. Prin urmare, în ultima diagramă nu există niciun rezultat pentru această placă video.

Concluzia principală a acestei părți este că teste diferite de geometry shader pot da rezultate diferite, soluțiile Nvidia vor conduce în unele, AMD în altele. Odată cu creșterea complexității shaderului de geometrie, AMD preia conducerea, dar trebuie să rețineți că toate acestea sunt teste sintetice, oh performanță reală se va putea judeca doar după testele de gaming, care sunt încă foarte puține, din păcate.

Rata de preluare a texturii din vertex shaders

Testele „Vertex Texture Fetch” măsoară viteza un numar mare mostre de textură din vertex shader. Testele sunt similare între ele, teoretic, raportul dintre vitezele testelor „Pământ” și „Valuri” ar trebui să fie aproximativ același. În ambele teste este utilizat pe baza datelor de eșantionare a texturii. Diferența este că testul „Valuri” folosește sărituri condiționate, în timp ce testul „Pământ” nu.

În primul test ("Pământ"), 32 (pentru modul "Detaliu efect scăzut") sau 48 ("Detaliu efect ridicat") sunt realizate probe de textură biliniară per vârf. Numărul de vârfuri poate fi de asemenea modificat, pentru cele trei moduri posibile aceste numere corespund: 30000, 124000 și 280000.

Luați în considerare modul „Detaliu efect scăzut”:

Toate cele trei grafice arată aproximativ aceeași imagine a performanței plăcilor video unele față de altele, cu excepția Performanță GeForce 8500 GT „sac” mai repede când sarcina crește decât performanța concurentului HD 2600 PRO, dacă prima placă video câștigă în „Low”, atunci soluția AMD este înainte în „High”. Pentru o pereche de HD 2600 XT și Geforce 8600 GT totul este exact invers, cu o sarcină ușoară soluția AMD este înainte, iar în „High” este deja puțin în urmă. Nu a fost nicio luptă printre soluțiile de top, toate variantele de G80 sunt mai rapide decât R600.

Raportul dintre performanța soluțiilor de top și a plăcilor video de la nivelul mediu și inferior rămâne același, de până la 2-3 ori între primul și de 2-3 ori între al doilea. Doar prea interesant mare diferențăîn performanța dintre HD 2600 PRO și HD 2600 XT, nu se poate explica prin numărul diferit de unități de textură (TMU), deoarece sunt folosite aceleași cipuri. Rezultatele testelor pot fi, de asemenea, afectate de debitului memorie, care este foarte diferită pentru variantele PRO și XT.

Să ne uităm la rezultatele aceluiași test cu un număr crescut de texturi:

In aceasta varianta placi video AMD ușor pierdut în viteză în raport cu rivalii lor. În toate perechile concurente, câștigătorii sunt soluțiile Nvidia care au cantitate mare module eficiente de textură. Diferența dintre AMD și Nvidia conditii specificate este de până la 1,5-2 ori. Cipurile video Nvidia sunt în mod clar mai eficiente în preluarea datelor de textură, pe baza testelor și a vertex-urilor și a pixelilor.

Să ne uităm la rezultatele celui de-al doilea test VTF, mă întreb dacă acolo vor apărea probleme similare? Testul Waves are mai puține mostre, dar sunt folosite sărituri condiționate. Numărul de mostre de textură biliniară per acest caz până la 14 ("Detaliu efect scăzut") sau până la 24 ("Detaliu efect ridicat") per vârf. Complexitatea geometriei se modifică în mod similar cu testul anterior, numărul total de vârfuri poate fi de aproximativ 124000, 498000 și 1122000 pentru modurile „Număr de poligon Scăzut”, „Mediu” și, respectiv, „Ridicat”.

„Valurile” nu ne arată nimic nou, totul este cam la fel ca în testul „Pământ” anterior. Se poate observa că unele cipuri Nvidia (G80 și G86) pierd cadre pe secundă odată cu creșterea complexității geometriei puțin mai rapid decât concurenții de la AMD (R600 și RV630), dar soluțiile Nvidia se dovedesc totuși a fi cele mai bune în majoritatea cazurilor.

Ultimele rezultate corespund și ele aproximativ cu cele arătate în cazurile anterioare, doar avantajul soluțiilor Nvidia se vede puțin mai bine. În general, putem vedea clar că plăcile video bazate pe cipuri Nvidia G8x efectuează testele noastre de eșantionare a texturii din vertex shadere mai repede decât soluțiile AMD bazate pe arhitectura R6xx. Aceasta este concluzia principală din această serie de teste VTF.

Concluzii și concluzii privind testele sintetice

Deci, a avut loc debutul utilizării RightMark3D 2.0 pentru cercetare pe site-ul nostru. Testele din compoziția sa acoperă aproape toate aspectele inovațiilor din Direct3D 10, ele sunt configurate flexibil, permițându-ne să evaluăm performanța comparativă a tuturor liniilor de cipuri Direct3D 10 de la AMD și Nvidia. Ambele arhitecturi unificate de la aceste companii au funcționat destul de bine în noile noastre teste Direct3D 10, fără scăderi majore de performanță, cu excepția unor erori evidente în driverele AMD. Ambele familii: R6xx și G8x se disting prin performanțe de calcul și textură ridicate, se descurcă bine cu shadere complexe de toate tipurile.

  • Dacă luăm rezultatele în ansamblu, atunci soluțiile Nvidia au un oarecare avantaj față de concurenții lor de la AMD, momentan plăcile lor video sunt înainte în majoritatea cazurilor. Dar în unele teste, cipurile AMD arată scoruri de top, de exemplu, în teste de geometrie complexă și pixel shader. Avantajul cipurilor AMD în astfel de teste crește chiar și odată cu creșterea sarcinii. Deci rezultatul bătăliei în jocurile DirectX 10 nu a fost încă determinat, este imposibil de spus cu siguranță care dintre rivali îl va câștiga. Putem doar presupune că rezultatele vor fi similare cu ale noastre - în majoritatea aplicațiilor, R6xx și G8x vor fi aproape unul de celălalt, în unele soluții bazate pe soluții de la Nvidia, în altele - AMD. Și va depinde în mare măsură de dezvoltatori și de metodele și algoritmii pe care îi folosesc.
  • Testele cu versiunea 4.0 a pixel shaders-urilor au arătat că cipurile video Nvidia se descurcă mai bine cu multiple texturi la o încărcare ALU relativ scăzută. Soluțiile AMD, la rândul lor, sunt în fața concurenței în testele de calcul pixel shader. La una dintre ele, plăcile video bazate pe cipuri de arhitectură R6xx au dat rezultate foarte bune și și-au depășit concurenții din tabăra Nvidia, iar situația din cel de-al doilea test este încă neclară din cauza erorilor din drivere.
  • După cum am observat deja, testele de geometrie și vertex shader dau rezultate diferite, în unele, soluțiile Nvidia sunt în frunte, în altele, AMD. Deoarece plăcile video AMD preiau conducerea odată cu creșterea complexității geometry shader, se poate presupune că în aplicațiile cu utilizarea activă a geometry shader, dacă apar în viitorul apropiat, cipurile acestei companii vor fi în frunte.
  • Ultimele teste RightMark3D 2.0 sunt teste pentru viteza de preluare a texturii din vertex shaders. Rezultatele pe care le arată arată clar că plăcile video bazate pe cipuri Nvidia G8x efectuează testele noastre de eșantionare a texturii din vertex shadere mai repede decât soluțiile AMD bazate pe arhitectura R6xx. Acest lucru se datorează echilibrului tradițional diferit între textură și capacitățile de calcul ale cipurilor celor două companii concurente.
  • „Reducerea” numărului de unități de shader, TMU și ROP-uri a lovit destul de semnificativ soluțiile de nivel mediu și inferior, reducându-le semnificativ performanța. Placile video ieftine sunt de multe ori in urma celor de sus, cele mai bune placi mid-end sunt de 2-3 ori in urma (de la HD 2900 XT si Geforce 8800 GTS), iar cele low-end sunt chiar mai multe - pana la 4-8 ori. Ceea ce este confirmat de rezultatele testelor de gaming, până acum doar Direct3D 9.
  • Pe baza rezultatelor noastre, driverele AMD pentru Vista sunt în mod clar mai puțin lustruite decât Drivere Nvidia. Dacă nu s-au găsit erori în produsele celei de-a doua companii din testele noastre, atunci soluțiile AMD au avut două probleme evidente: întreaga linie de cipuri în al doilea test „computațional” de pixel shaders („Fire”), precum și solutie de top HD 2900 XT în cel mai dificil mod de testare pentru viteza de preluare a texturii din umbrirea vertexului Pământului. Aș dori foarte mult să cred că aceste neajunsuri vor fi eliminate în următoarele versiuni ale driverelor CATALYST.

Datorită începerii vânzărilor de procesoare AMD Ryzen Cu 5 înainte de termen (11 aprilie), primele recenzii ale acestor procesoare apar acum. Am vorbit deja pe scurt despre performanța procesorului Ryzen 5 1400 cu 4 nuclee în teste sintetice și jocuri moderne. Acum, colegii noștri spanioli de la El Chapuzas Informatico au publicat o recenzie a 6-core procesor AMD Ryzen 5 1600.

Acest procesor are șase nuclee fizice, fiecare dintre ele având două fire de calcul, care oferă în cele din urmă douăsprezece fire. Frecvența de bază a procesorului este de 3,2 GHz și poate crește dinamic până la 3,6 GHz. AMD Ryzen 5 1600 are un cache L3 total de 16 MB (8+8 MB), iar fiecare nucleu are 512 KB de cache L2 și, respectiv, 64 și 32 KB de cache de instrucțiuni și date L1. Ca și alte procesoare Ryzen, acest cip este realizat în pachetul Socket AM4, iar TDP-ul său este de 64W. Costul recomandat al articolelor noi pentru piața din SUA este de 219 USD.

Configurația bancului de testare folosit de colegii noștri este reprezentată de următoarele componente:

  • Placa de baza: MSI X370 XPower Gaming Titanium;
  • RAM: G.Skill TridentZ DDR4 3600MHz, tactat la 2400MHz;
  • Placa video: MSI GeForce GTX 1070 Gaming Z;
  • Sursa de alimentare: Fii linistit! Dark Power Pro11 1200V;
  • SSD-uri: Kingston SSDNow KC400 128GB și Corsair LX 512GB;
  • Sistem de racire: Wraith Spire;
  • Sistem de operare: Windows 10 64 biți.

Performanța cu un singur nucleu a procesorului Ryzen 5 1600 nu este de așteptat să fie mult diferită de performanța cu un singur nucleu a Ryzen 7 1700X, deoarece sunt construite pe aceeași matriță de siliciu, doar procesorul cu șase nuclee are două nuclee dezactivate.

În multithreaded Benchmark-uri CPU-Zși wPrime 2.1 (32M), noul produs a dat rezultate destul de așteptate, demonstrând un nivel de performanță foarte bun.

În Cinebench 15, noutatea este înaintea nu numai overclockării la 4,9 GHz și suplimentată cu mai multe memorie rapidă(3600 MHz) Intel Core i7-7700K quad-core mai scump, dar și Intel Core i7-5930K cu șase nuclee. Dar în codificarea video, aceasta din urmă s-a dovedit a fi mai rapidă.

Cu memorie, procesorul Ryzen 5 1600 nu funcționează bine, deși este puțin mai bun decât Ryzen 7 1700X.

În unele teste sintetice, noul AMD arată rezultate mai bune decât Ryzen 7 1700X, iar în unele pierde ușor. În majoritatea testelor sintetice, procesorul Intel Core i7-6700K este mai rapid decât ambii reprezentanți AMD.

În ceea ce privește performanța în jocuri, este destul de impresionant. În majoritatea testelor în Rezoluție completă HD (1920 x 1080 pixeli), noul produs nu este cu mult în urmă, față de mai scumpul Intel Core i7-6700K și, în anumite privințe, îl devansează. Este interesant de remarcat că Doom (folosind OpenGL) și Rise of Tomb Raider (folosind folosind DirectX 11) Ryzen 5 1600 este cu mult înaintea Ryzen 7 1700X.

La rezoluție 4K UHD (3840 x 2160 pixeli), situația este cam aceeași, iar în cazul majorității jocurilor totul s-a bazat pe performanța plăcii video.

Asa de sistem obișnuit răcire, frecvența procesorului a fost ridicată la 3,9 GHz, în timp ce tensiunea de bază a fost de 1,36 V. Va fi interesant de văzut cu cât de mult poate fi overclockat noul produs răcit cu lichid, și la ce frecvențe se va supune în overclocking extrem.

Temperatura procesorului AMD Ryzen 5 1600 este de 39 de grade Celsius în mod inactiv și de 62 până la 65 de grade Celsius sub sarcină. Consumul sistemului bazat pe noutatea în jocuri a fost de 245 W, ceea ce este aproximativ egal cu consumul sistemului bazat pe Intel Core i7-6700K, care este egal cu 250 W.

Dezbaterea pro și contra despre așa-numitele teste sintetice este la fel de veche ca timpul. Sau, prin macar precum testele sintetice în sine. Ideea principală pe care se bazează este de a evalua performanța generală a unui sistem informatic și, în teorie, aceasta este o idee cu adevărat grozavă.

ÎN lume ideală rezultatul unui astfel de test vă poate oferi o idee clară și, mai important, realistă la ceea ce v-ați aștepta de la un computer, fie desktop sau mobil, în diferite scenarii practice - de la lucru și navigarea pe internet până la divertisment multimedia și jocuri .

Din păcate, nu există lucruri ideale și tocmai din acest motiv testele sintetice, ca orice altceva, nu sunt perfecte. În special, cele două cele mai populare și utilizate pe scară largă programe de testare această clasă - 3DMark și PCMark de la Futuremark - s-a întâmplat deja să fie în epicentrul unei serii de scandaluri. Desigur, aceasta nu este vina dezvoltatorilor de la Futuremark înșiși - motivele, în primul rând, constă în abordările diferite ale producătorilor de a-și „optimiza” echipamentele, cu care folosesc cu îndemânare unele neajunsuri în procedurile de testare și implementează artificial înalte. rezultate, care însă nu sunt confirmate ulterior.la practică.

Și deși acest lucru le dă un nume prost, testele sintetice sunt încă populare. Cu toate acestea, este foarte rar ca acestea să fie folosite ca singura măsură a performanței unui computer. În schimb, acestea sunt adesea însoțite de o alternativă mai realistă pentru măsurarea vitezei, care este de obicei cele mai actuale jocuri cu un contor încorporat pentru unul dintre cei mai importanți indicatori pentru fiecare jucător - numărul de cadre pe secundă.

Cu toate acestea, în unele cazuri acest tip de test nu este aplicabil din punct de vedere pur pragmatic - de exemplu, când vorbim despre sistemele de clasă business pentru care performanța în jocuri nu este de o importanță cheie. Motivul este că jocurile dau impresia greșită atunci când vine vorba de o mașină complet puternică, cum ar fi, de exemplu, Lenovo ThinkPad X1 Carbon sau HP EliteBook 1040. „călărește” cu laptopul lor la 60+ fps. În schimb, lucrurile sunt importante pentru ei, cum ar fi rezistența structurală, protecția fiabilă a informațiilor și timpul maxim durata de viata a bateriei.

În astfel de cazuri, „sinteticele” vin în ajutor - cum ar fi PCMark, care măsoară performanța generală a întregii configurații. Totuși, acest lucru duce la unele particularități în ceea ce privește interpretarea corectă a rezultatelor, care diverse sisteme arată în test.

Studiu de caz: comparație directă a jocului laptop Lenovo Ultrabook-ul de afaceri Y50 și HP EliteBook 1040 ar putea fi uluitor. Motivul este că rezultatele acestor două sisteme sunt similare, dar unul dintre ele se bazează pe un destul de puternic placă grafică discretă (NVIDIA GeForce 860M), iar celălalt pe soluția grafică integrată (Intel HD Graphics 4400). Cu toate acestea, dacă comparăm performanța lor de joc, devine rapid clar că, spre deosebire de Lenovo Y50, EliteBook 1040 nu poate oferi o experiență optimă de joc... Și nu ar trebui, deoarece în acest caz vorbim despre masina mobila cu un cu totul alt scop.

Dar, deoarece PCMark ia în considerare performanța generală, ambele mașini obțin un rezultat similar. În esență, testul constă dintr-o serie de sarcini diferite, al căror obiectiv cumulativ este de a evalua cu acuratețe (pe cât posibil) capacitatea unui anumit computer de a face față scenariilor normale de încărcare de zi cu zi. De exemplu, PCMark are sarcini concepute pentru a evalua performanța unui computer în scenarii precum navigarea pe Internet, lucrul cu editor de text, editare imagine digitala, chat video și jocuri casual.

Fiecare dintre aceste teste încarcă componentele sistemului în felul său, în timp ce performanța totală a sistemului testat este calculată folosind o formulă specială și se formează rezultatul final.

Cu toate acestea, dacă doriți să obțineți o imagine mai clară a capacităților computerului, trebuie să faceți două lucruri: mai întâi, uitați-vă la defalcarea detaliată a rezultatelor pe secțiuni individuale. În al doilea rând, vizitați site-ul web Futuremark; acolo vei găsi sute de mii de configurații diferite și vei putea compara performanța sistemului tău cu o mașină cu setări similare, mai mici sau mai mari.

Și încă ceva - permiteți-mi să închei reiterând: rezultatele testelor sintetice, fie 3DMark, fie PCMark, nu trebuie luate la propriu. Sunt doar un punct de referință bun, unul dintre numeroasele instrumente de evaluare a performanței computerului, așa că nu ar trebui să le acordați prea mult credit. de mare importanta. Dacă aveți nevoie de informații detaliate și cuprinzătoare care vă vor ajuta să alegeți una sau alta configurație, aveți răbdare și citiți întreaga recenzie a acesteia (sau mai bine, mai multe recenzii în surse diferite), în loc să derulați până la partea de jos a textului doar pentru a vedea rezultatele testelor sintetice.

O zi bună!

Teste sintetice

ÎN recenzie originală toate testele merg la pagini diferite, le voi combina pentru comoditate, dar le voi împărți în sintetice și de joc.

Wprime 2.0

Un utilitar binecunoscut pentru testarea procesoarelor multi-core, determină puterea acestora făcând anumite calcule. Cu cât este mai puțin timp petrecut testului, cu atât rezultatul este mai bun.

Cel mai rapid (ceea ce nu este surprinzător - cu viteza de ceas) s-a dovedit a fi procesorul principal al testului de astăzi. Neplăcut surprins că Core i5 2300 a rămas în urma lui i5 760 cu aproape o secundă (cu aceeasi frecventa). Probabil afectat de dimensiunea mai mică a cache-ului de al treilea nivel.

Fritz Chess Benchmar

Și acesta este un test care determină performanța procesorului prin procesarea diverșilor algoritmi de șah. În acest punct de referință, cu cât mai multe puncte - cu atât rezultatul este mai bun.

„Bătrânul” Core i5 760 i-a depășit pe toți reprezentanții familiei Sandy Bridge.

WinRAR 3.92

Acest arhivator nu are nevoie de prezentare. Performanța va fi determinată de numărul de KB/s când este comprimat anumite fișiere. Cu cât mai mare cu atât mai bine.


Poza, ca și în primul test, este liderul 2500K, urmat de al 760-lea, la doi pași de care se află i5 2300.

7-Zip 9.13

Încă una cunoscut arhivator, pe care personal l-am recomandat multora (apaseaza mult mai bine decat RAR si ZIP, cu care este prieten bun procesoare multi-coreși sisteme de operare x64, plus complet gratuit) la un moment dat. Performanța este calculată în același mod ca în testul precedent.


Testul a fost efectuat în modurile de compresie (primul grafic) și decompresie (al doilea) ale fișierelor. Este clar cine conduce și cu cât.

Adobe Photoshop CS5

Celebrul pachet de procesare fisiere grafice. Nu am înțeles cât de specific au fost testate procesoarele (dacă aveți idei - vorbiți sus), dar, totuși, să ne uităm la rezultate:


Aparent, rezultatul este în câteva secunde. Mai puțin este mai bine. Conducerea „Poduri de nisip”

POV Ray 3.7

POV Ray- program popular din sursa deschisa pentru testarea procesoarelor în operațiuni cu virgulă mobilă. Numărul de puncte din test este numărul de pixeli randați pe secundă, cu cât sunt mai mulți, cu atât mai bine.


Se repetă situația din testul precedent. Atenție la ce avantaj are i5 2300 față de i5 760 (vă reamintesc că viteza de ceas este aceeași pentru ambele procesoare)! Cu siguranță, noua arhitectură arată caracter. Sau modul Turbo ajută?

CineBench R11.5

Bluebench nu are nevoie de prezentare mare test performanța procesorului (atât în ​​modul 1-thread, cât și în modul multi-thread) în condiții de randare 3D.


Imaginea este exact aceeași ca în testele anterioare. „Poduri” în față, 760 - în spate. Iar avantajul produselor noi este foarte solid.

Codificator H.264 V2

Codarea video este o sarcină care este adesea luată procesoare puternice. Cu cât este mai puțin timp pentru a codifica videoclipul în h264, cu atât mai bine.


Sărac 760! Sandy Bridge "și nu-i da o șansă de câștig. Îmi doresc deja un astfel de procesor (doar hexacore, cel puțin), mai bine overclockat la 4,5-5GHz imediat. În rest, codificarea video pe Atom" și Q9550 nu mai este la fel de veselă ca înainte

Nu-mi place când cineva încearcă să folosească mostre de cod realizate manual pentru a evalua capacitățile unui analizor de cod static. Acum pe exemplu concret Voi demonstra de ce am o atitudine negativă față de testele sintetice.

Nu cu mult timp în urmă, Bill Torpey a scris o notă pe blogul său „Even Mo” Static”, în care a povestit cum au funcționat, în opinia sa, instrumentele Cppcheck și PVS-Studio la analiza proiectului itc-benchmarks. Proiectul itc-benchmarks. este o analiză statică de referință de la Toyota ITC.

Nu mi-a plăcut că după ce am citit articolul se face impresia că analizoarele Cppcheck și PVS-Studio sunt aproximativ egale în capacități. Din articol rezultă că un analizor are performanțe mai bune într-unul, al doilea în altul, dar, în general, capacitățile lor de diagnosticare sunt similare.

nu cred. După părerea mea, analizorul nostru PVS-Studio este de câteva ori mai puternic decât Cppcheck. Și în general, aceasta nu este o „opinie”, o știu!

Cu toate acestea, deoarece nu este clar din exterior că PVS-Studio este de 10 ori mai bun decât Cppcheck, atunci ar trebui să încercăm să înțelegem motivul. Am decis să mă uit la aceleași criterii de referință itc și să aflu de ce PVS-Studio nu a funcționat bine pe această bază de testare.

Cu cât mă uitam mai mult în el, cu atât mă simțeam mai iritat. Și un exemplu m-a dezechilibrat complet și voi vorbi despre asta puțin mai jos. Concluziile mele sunt: ​​nu am plângeri împotriva lui Bill Torpey. A scris un articol bun, sincer. Mulțumesc Bill. Dar am o revendicare la Toyota ITC. Părerea mea personală: baza lor de testare este o porcărie. Aceasta este, desigur, o afirmație tare, dar cred că am suficiente calificări și experiență pentru a vorbi despre analizatorii de cod statici și despre cum să le evaluez. În opinia mea, itc-benchmark-urile nu pot fi utilizate pentru a evalua în mod adecvat capacitățile unui anumit analizor.

Și iată testul în sine, care în cele din urmă m-a scos din liniștea mea.

Deci, ce se întâmplă, este PVS-Studio mai slab decât Cppcheck în acest exemplu? Nu, doar e mai puternic!

Analizatorul PVS-Studio înțelege că acest cod a fost scris în mod deliberat și nu există nicio eroare aici.

Există situații în care este scris un cod similar special pentru a provoca o excepție să fie aruncată atunci când un pointer nul este dereferențiat. Acest lucru poate fi găsit în teste sau în secțiuni specifice de cod. Am văzut cod similar de multe ori. Iată, de exemplu, cum ar putea arăta într-un proiect real:

Void GpuChildThread::OnCrash() ( LOG(INFO)<< "GPU: Simulating GPU crash"; // Good bye, cruel world. volatile int* it_s_the_end_of_the_world_as_we_know_it = NULL; *it_s_the_end_of_the_world_as_we_know_it = 0xdead; }
Prin urmare, analizorul PVS-Studio implementează mai multe excepții în diagnosticul V522, pentru a nu înjură un astfel de cod. Analizatorul vede asta null_pointer_001 nu este o funcție reală. În codul real, nu există erori în funcții atunci când zero este scris la un pointer și imediat dereferențiat. Și numele funcției îi spune analizorului că „indicatorul nul” este acolo pentru un motiv.

Pentru astfel de cazuri, excepția A6 este implementată în diagnosticul V522. Sub ea intră și funcția sintetică. null_pointer_001. Iată cât de periculoasă este excepția A6:

Dereferința unei variabile este într-o funcție al cărei nume conține unul dintre cuvintele:

  • eroare
  • Mod implicit
  • prăbușire
  • nul
  • Test
  • încălcare
  • arunca
  • excepție
În acest caz, variabilei i se atribuie 0 de linia de mai sus.

Testul sintetic s-a potrivit pe deplin cu această excepție. În primul rând, numele funcției conține cuvântul „null”. În al doilea rând, zero este atribuit unei variabile chiar pe linia anterioară. Excepția a expus codul fals. Și codul chiar nu este real, este un test sintetic.

Din cauza unor astfel de nuanțe nu-mi plac testele sintetice!

Am la itc-benchmarks și alte reclamații. De exemplu, toate în același fișier, putem vedea acest test:

Void null_pointer_006 () ( int *p; p = (int *)(intptr_t)rand(); *p = 1; /*Instrumentul ar trebui să detecteze această linie ca eroare*/ /*ERROR:NULL pointer dereference*/ )
Funcţie rand poate returna 0, care apoi devine NULL. Analizorul PVS-Studio nu știe încă ce poate returna randși, prin urmare, nu vede nimic suspect în acest cod.

Le-am rugat colegilor să învețe analizatorul să înțeleagă mai bine care este funcția rand. Nu există încotro, va trebui să ascuți analizorul cu o pilă, astfel încât să funcționeze mai bine pe baza de test în cauză. Aceasta este o măsură forțată, deoarece seturi de teste similare sunt utilizate pentru evaluarea analizoarelor.

Dar nu-ți fie frică. Declar că vom continua să lucrăm la diagnostice foarte bune, și să nu potrivim analizorul la teste. Poate că vom retușa ușor PVS-Studio pentru itc-benchmark-uri, dar în fundal și doar în acele locuri care au măcar sens.

Vreau ca dezvoltatorii să înțeleagă că exemplul cu rand nu prea prețuiește nimic. Acesta este un test sintetic, care este aspirat de pe deget. Ei nu scriu astfel de programe. Nu există astfel de erori.

Apropo, dacă funcția rand va returna nu 0, dar 1400 nu va fi mai bun. Totuși, un astfel de indicator nu poate fi dereferențiat. Deci, dereferențiarea unui pointer nul este un caz special ciudat de cod complet incorect, care tocmai a fost creat și care nu apare în programele reale.

Cunosc adevărate probleme de programare. De exemplu, acestea sunt greșeli de tipar pe care le identificăm cu sute, să zicem, folosind diagnosticul V501. Interesant, în itc-benchmarks, nu am observat un singur test în care să se verifice dacă analizorul poate detecta o greșeală de tipar de genul „dacă (a.x == a.x)”. Nici un singur test!

Astfel, itc-benchmarks ignoră capacitatea analizatorilor de a găsi greșeli de scriere. Și cititorii articolelor noastre știu cât de comune sunt aceste greșeli. Dar conține, după părerea mea, cazuri de testare stupide care nu se găsesc în programele reale. Nu îmi pot imagina că într-un proiect serios puteți întâlni un astfel de cod care duce la o depășire a matricei:

Void overrun_st_014 () ( int buf; int index; index = rand(); buf = 1; /*Instrumentul ar trebui să detecteze această linie ca eroare*/ /*EROARE: buffer overrun */ sink = buf; )
Poate că acest lucru poate fi găsit doar în lucrările de laborator ale studenților.

În același timp, știu că într-un proiect serios este ușor să întâlnești o greșeală de tipar:

Return (!strcmp (a->v.val_vms_delta.lbl1, b->v.val_vms_delta.lbl1) && !strcmp (a->v.val_vms_delta.lbl1, b->v.val_vms_delta.lbl1));
Analizorul PVS-Studio

Top articole similare