De afgelopen weken zijn sommige van onze lezers een bekende bug tegengekomen in de Directx ten Profiler. Er zijn een aantal factoren die dit probleem kunnen veroorzaken. Laten we het er nu over hebben.
Goedgekeurd: Fortect
- 47 minuten om te lezen.
- Nauwkeurige profilering is moeilijk vanwege Direct3D
- Hoe de Direct3D-renderreeks nauwkeurige accounts creëert
- Profilering van Direct3D-statuswijzigingen
- Samenvatting
- Toepassing
( API) oproepen. Als je hiermee klaar bent, maar resultaten hebt ontvangen die verschillen door de weergavevolgorde van de weergavevolgorde, of als eigenaren vermoeden dat het experiment niet overeenkomt met de daadwerkelijke proefoplossingen, kan de volgende informatie je helpen volledig te begrijpen waarom.
De informatie die hier wordt verstrekt is geheel gebaseerd op de veronderstelling dat u kennis en ervaring heeft op de volgende gebieden:
- C / C ++ Programmeren
- Direct3D API-programmering
- API voor tijdmeting
- Videokaart, dan stuurprogrammasoftware.
- Mogelijke onverklaarbare resultaten buiten profileringservaring.
Nauwkeurige Direct3D-profilering is moeilijk
De profiler rapporteert de tijd die nodig is voor elke API-aanroep. Uiteindelijk zou dit de prestaties moeten verbeteren door hotspots te detecteren en te verwijderen. Er zijn verschillende mogelijke groepen van profilering en profileringsmethoden.
- De Selective Profiler is het grootste deel van de tijd inactief terwijl hij met regelmatige tussenpozen draait om te proeven (of positief brandhout te verbranden) wat hij doet. Het toont de hoeveelheid tijd die ongeveer aan elk gesprek is besteed. Over het algemeen is bemonstering van een profiler zeker zeer invasief voor een toepassing en heeft het minimale nadelige gevolgen voor de gehele toepassing.
- De Instrumentprofiler meet de werkelijke gebeurtenis die nodig is om een termijn te voltooien. Dit vereist het compileren van de start-stop-scheidingstekens in de toepassing van een persoon. Toolkit is letterlijk een profiler, die zonder twijfel relatief ingrijpender is voor de toepassing dan de specifieke sampleprofiler.
- U kunt ook een zinvolle, aangepaste profileringstechniek gebruiken met een aanzienlijk hoge snelheidstimer. Dit resultaat lijkt erg op dat van de instrumentale profiler.
Het type buiten het huis van de profiler of de oude profileringsmethode is gewoon een taakfunctie die enkele statistieken genereert.
Profilering geeft u antwoorden om u budget te geven voor het werk van uw klanten. Ter illustratie: stel dat je weet dat het, onder het gemiddelde, duizend wandklokcycli kost om een API-aanroep te doen. Mogelijk hebt u een bepaald niveau van alle prestatie-inferentie nodig, bijvoorbeeld:
- Er is een functionele beperking op een 2 GHz-processor (die 50 procent van zijn weergavetijd in beslag neemt) die deze API nu 1 miljoen keer per minuut kan aanroepen.
- Om 30 frames per seconde te krijgen, kan niet iedereen deze API meerdere keren aanroepen om te profiteren van 33.000 keer per frame.
- Je kunt vrijwel elk maximum van 3.3000 objecten per bewaren (ervan uitgaande dat frame tien van dit API-type de weergaveverzamelingen voor elk object aanroept).
Met andere woorden, als u genoeg minuten heeft om de API aan te roepen, kunt u een vraag stellen over het benodigde budget voor parameters zoals het aantal primitieven dat interactief kan worden weergegeven. Maar de onbewerkte inkomsten die door de geweldige toolprofiler worden geretourneerd, kunnen vragen over kostenbeheer niet adequaat beantwoorden. Dit is omdat de grafische richting complexe ontwerpproblemen heeft, zoals het aantal componenten dat moet worden uitgevoerd, het aantal processors dat een bepaalde workflow tussen componenten domineert, en naast de seo-strategieën die in de pilot tijdens runtime zijn geïmplementeerd, kan de pijpleiding tijdens het ontwerp efficiënter maken.
Elke API roept via meerdere componenten aan
Elke oproep moet meerdere componenten bevatten vanwege de grafische kaartmethode. Bijvoorbeeld races. Laten we eens kijken naar de volgende manifestatiereeks, die twee oproepen bevat om je driehoek te tekenen:
definieer textuur (...);DrawPrimitive (D3DPT_TRIANGLELIST, 9, 1);
Het volgende conceptdiagram toont momenteel de verschillende menselijke componenten die oproepen altijd moeten doorlopen.
De applicatie roept What Direct3d aan, manipuleert de menselijke scène, handelt gebruikersinteractie af en begrijpt hoe rendering wordt uitgevoerd. Dit alles is effectief en wordt gespecificeerd in de weergavevolgorde, die volgens instructeurs tijdens runtime wordt verzonden met behulp van Direct3D API-aanroepen. De weergavevolgorde is hoe dan ook gewoon hardware (d.w.z. de API-aanroepen van de telefoon zijn hardware-indie, maar kennen de functies die worden ondersteund door de belangrijkste videokaart).
De runtime converteert deze definities naar een apparaatonafhankelijk formaat. De runtime verwerkt elk stukje van deze speciale communicatie tussen de applicatie en dit ene stuurprogramma, zodat de applicatie naar meerdere compatibele huisverbeteringen zal draaien (afhankelijk van welke voorwaarden Xia vereisen). Wanneer een enkele functie-aanroep wordt gevonden, houdt de instrumentatieprofiler bij hoe de tijd die aan de taak is besteed en in het bijzonder hoe lang de functie is geretourneerd. Een beperking van iemands propriëtaire toolprofiler is dat het helemaal geen rekening houdt met de tijd die een golfclub nodig heeft om de uitvoer rechtstreeks naar de grafische kaart te sturen, en evenmin met de tijd die nodig is om de grafische kaart te bekijken. Met andere woorden, een standaard instrumentatieprofiler waarvan u profiteert, wijst al het gecorreleerde werk toe aan elke inspanningsoproep.
Met de driversoftware kunt u de specifieke hardwarekennis van de videotarotkaart gebruiken om een apparaatonafhankelijke commandoreeks om te zetten in een volledig nieuwe videokaartcommandoreeks. Drivers kunnen ook de volgorde optimaliseren waarin de vereisten naar de videokaart worden gestuurd, dus de beschrijving naar de videokaart is echt efficiënt. Deze aanpassingen kunnen profileringsproblemen veroorzaken, omdat de omvang van het geleerde werk niet is wat het lijkt (mogelijk moet u veel aanpassingen uitzoeken om hieraan tegemoet te komen). Het stuurprogramma vereist meestal controle over de uitvoering voordat de grafische kaart van het e-boek belangrijke opdrachten verwerkt.
De decals-kaart doet het grootste deel van de rest van de huidige weergave, waarbij gegevens van de basisvertex worden gecombineerd met die indexbuffers, texturen, weergave-informatie en grafische voorschriften.
Elke Direct3D API-aanroep moet door een afgehandelde component (runtime, driver en maximum van de grafische kaart) worden gedaan om iets te renderen.
Componenten worden bestuurd door meerdere processors
Goedgekeurd: Fortect
Fortect is 's werelds meest populaire en effectieve pc-reparatietool. Miljoenen mensen vertrouwen erop dat hun systemen snel, soepel en foutloos blijven werken. Met zijn eenvoudige gebruikersinterface en krachtige scanengine kan Fortect snel een breed scala aan Windows-problemen vinden en oplossen - van systeeminstabiliteit en beveiligingsproblemen tot geheugenbeheer en prestatieproblemen.
De relatie tussen deze componenten is echt complexer omdat een applicatie, runtime en deelnemer bijna altijd worden bestuurd door een enkele processor, en een videokaart wordt bestuurd door de beste enkele processor. Het volgende diagram toont twee verschillende soorten processors: centrale verwerkingseenheid (CPU) en lay-outverwerkingseenheid (GPU).
Pc-gadgets omvatten toen hij ten minste één processor en één GPU was, maar mogelijk zullen er ook meerdere of beide zijn. Processors zijn constant te vinden op het moederbord, terwijl GPU’s het moederbord zijn, of mogelijk een videokaart. De CPU-snelheid wordt bepaald door de wandklok-chip op het moederbord, terwijl de GPU-groei wordt bepaald door de individuele echte klok.
Versnel de prestaties van uw computer nu met deze eenvoudige download.