function PdfBenchmarkStatusName(Status: TPdfBenchmarkStatus): string;
function RunPdfBenchmarkCorpus(const Cases: array of TPdfBenchmarkCase; const Options: TPdfBenchmarkOptions; const CancellationToken: IPdfCancellationToken = nil): TPdfBenchmarkReport;
function RunPdfBenchmarkFiles(const FileNames: array of string; const Options: TPdfBenchmarkOptions; const CancellationToken: IPdfCancellationToken = nil): TPdfBenchmarkReport;
| Type | Description |
|---|---|
TPdfBenchmarkStatus | Sluttilstand med pbsPassed, pbsFailed eller pbsSkipped |
TPdfBenchmarkCase | Inputsti, valgfrit kodeord, enhancement-identifikator, visningsnavn og valgfrie forventede semantiske og pixel-hashes |
TPdfBenchmarkCases | Dynamisk array af TPdfBenchmarkCase-værdier |
TPdfBenchmarkOptions | Antal opvarmnings- og målegennemløb, side- og pixelbudgetter, renderingsindstillinger, hash-valg, selvstændig genåbningsgate, samplinginterval, cancellation og fejlpolitik |
TPdfBenchmarkCaseResult | Ét case-resultat med byte-størrelser, sidetal, tidstagninger, gennemløb, working-set-samples, hashes, stabilitetsgates, genåbningsgates og fejlbeviser |
TPdfBenchmarkCaseResults | Dynamisk array af TPdfBenchmarkCaseResult-værdier |
TPdfBenchmarkReport | Ordninge caseresultater med aggregerede tællere, konformitetsstatus, JSON-eksport og CSV-eksport |
| Member | Description |
|---|---|
PdfBenchmarkStatusName | Returnerer det stabile visningsnavn for en TPdfBenchmarkStatus-værdi |
TPdfBenchmarkCase.FromFile | Opretter en case ud fra en filsti med valgfri enhancement-identifikator og visningsnavn |
TPdfBenchmarkOptions.Default | Returnerer afgrænsede standardværdier for opvarmning, måling, rendering, hashing, genåbningsvalidering og hukommelsessampling |
TPdfBenchmarkCaseResult.IsPassed | Returnerer True, når casens status er pbsPassed |
TPdfBenchmarkReport.PassedCount / FailedCount / SkippedCount | Tæller resultater pr. slutstatus |
TPdfBenchmarkReport.IsConformant | Returnerer kun True, når gennemløbet ikke blev cancel'et, og alle cases bestod |
TPdfBenchmarkReport.ToJson / ToCsv | Serialiserer den komplette rapport til JSON- eller CSV-tekst |
TPdfBenchmarkReport.SaveJsonToFile / SaveCsvToFile | Skriver den serialiserede rapport til en UTF-8-fil |
RunPdfBenchmarkCorpus | Kører fuldt beskrevne benchmark-cases med de ønskede indstillinger og cancellation-token |
RunPdfBenchmarkFiles | Kører en liste af filnavne med standard-case-metadata og de ønskede indstillinger |
| Record | Public fields |
|---|---|
TPdfBenchmarkCase | Name, EnhancementId, FileName, Password, ExpectedSemanticHash og ExpectedPixelHash |
TPdfBenchmarkOptions | WarmupRuns, MeasuredRuns, MaxPages, RenderWidth, RenderHeight, MaxPixelsPerPage, RenderOptions, BackgroundColor, IncludeSemanticHash, IncludePixelHash, VerifyIndependentReopen, MemorySampleIntervalMs og StopOnFailure |
Hvert opvarmnings- og målegennemløb åbner en frisk TPdf-instans fra casens sti, indlæser den via det normale PDFium-baserede API, renderer et afgrænset sideudsnit, beregner de ønskede hashes, gemmer i hukommelsen og frigiver alle handles
Førsteside-metrikken kombinerer dokumentindlæsning og den første afgrænsede siderendering, så den udtrykker tiden til de første brugbare pixels frem for alene parser-opbygning
Render-gennemløbet bruger det målte sidetal og renderingsvarigheden, mens MaxPages, RenderWidth, RenderHeight og MaxPixelsPerPage afgrænser arbejdet inden bitmap-allokering
Den semantiske SHA-256-digest dækker siderækkefølge, siddimensioner, rotationer og UTF-16-tekst, mens pixel-SHA-256-digesten dækker deterministiske bitmap-dimensioner og scanline-bytes
Når selvstændig genåbningsvalidering er slået til, indlæses de gemte bytes i en anden TPdf-instans, og sidetal, semantisk hash og pixel-hash skal matche det målte inputgennemløb
En case fejler, hvis hashes varierer mellem målegennemløbene, en forventet hash ikke matcher, selvstændig genåbning ændrer semantik eller pixels, indlæsning eller gemning fejler, eller en afgrænset operation udløser en fejl
| Field | Meaning |
|---|---|
InputBytes / SavedBytes | Kildefilens længde og længden af PDFium-save-outputtet |
LoadMilliseconds | Gennemsnitlig målt varighed af dokumentindlæsning |
FirstPageMilliseconds | Gennemsnit af indlæsning plus første afgrænsede rendering |
RenderMilliseconds / RenderPagesPerSecond | Gennemsnitlig afgrænset renderingsvarighed og afledt sidegennemløb |
SaveMilliseconds / ReopenMilliseconds | Gennemsnitlig varighed af in-memory-save og selvstændig genåbningsvalidering |
BaselineWorkingSetBytes / PeakWorkingSetBytes | Laveste baseline og højeste samplede proces-working-set på tværs af målegennemløb |
PeakWorkingSetIncreaseBytes | Største samplede stigning over den tilsvarende kørings-baseline |
SemanticHash / PixelHash | Lowercase SHA-256-digests, der bruges til stabilitets- og korpusforventningsgates |
ReopenSemanticHash / ReopenPixelHash | Identiteter beregnet ud fra den selvstændigt genåbnede gemte fil |
StableAcrossRuns | True, når hvert målegennemløb producerer de samme semantiske og pixel-identiteter |
IndependentReopenChecked / IndependentReopenSucceeded | Rapporterer, hvorvidt genåbningsvalidering blev ønsket, og hvorvidt genåbningen lykkedes |
EquivalentAfterReopen | True, når den selvstændigt genåbnede gemte fil bevarer sidetal og de valgte identiteter |
ExpectedSemanticHashMatched / ExpectedPixelHashMatched | Rapporterer hver konfigureret korpusforventningsgate uafhængigt |
| Record | Public fields |
|---|---|
TPdfBenchmarkCaseResult | Name, EnhancementId, FileName, Status, ErrorText, PageCount, PagesRendered, WarmupRuns og MeasuredRuns ud over de måle- og gate-felter, der er listet ovenfor |
TPdfBenchmarkReport | Results indeholder de ordninge caseresultater, og Cancelled registrerer terminal cancellation |
TPdfBenchmarkOptions.Default aktiverer semantisk og pixel-hash, selvstændige genåbningstjek, ét opvarmningsgennemløb, tre målegennemløb og afgrænset renderingTPdfBenchmarkReport.IsConformant til at returnere False
uses FPdfBenchmark;
var
Cases: TPdfBenchmarkCases;
Options: TPdfBenchmarkOptions;
Report: TPdfBenchmarkReport;
begin
SetLength(Cases, 1);
Cases[0] := TPdfBenchmarkCase.FromFile('C:\Corpus\sample.pdf', 100, 'release-sample');
Options := TPdfBenchmarkOptions.Default;
Options.MaxPages := 8;
Options.RenderWidth := 1024;
Report := RunPdfBenchmarkCorpus(Cases, Options);
Report.SaveJsonToFile('C:\Corpus\benchmark.json');
Report.SaveCsvToFile('C:\Corpus\benchmark.csv');
end;