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 | Koncový stav s pbsPassed, pbsFailed nebo pbsSkipped |
TPdfBenchmarkCase | Vstupní cesta, volitelné heslo, identifikátor rozšíření, zobrazovaný název a volitelné očekávané sémantické a pixelové hash |
TPdfBenchmarkCases | Dynamické pole hodnot TPdfBenchmarkCase |
TPdfBenchmarkOptions | Počty zahřívacích a měřených průchodů, rozpočty stránek a pixelů, vykreslovací volby, výběr hashů, nezávislá brána opětovného otevření, interval vzorkování, zrušení a politika selhání |
TPdfBenchmarkCaseResult | Výsledek jednoho případu s velikostmi v bajtech, počty stránek, načasováním, propustností, vzorky working set, hashi, bránami stability, bránami opětovného otevření a důkazy selhání |
TPdfBenchmarkCaseResults | Dynamické pole hodnot TPdfBenchmarkCaseResult |
TPdfBenchmarkReport | Uspořádané výsledky případů s agregovanými čítači, konformním stavem, exportem JSON a exportem CSV |
| Member | Description |
|---|---|
PdfBenchmarkStatusName | Vrací stabilní zobrazovaný název pro hodnotu TPdfBenchmarkStatus |
TPdfBenchmarkCase.FromFile | Vytvoří případ z cesty k souboru s volitelným identifikátorem rozšíření a zobrazovaným názvem |
TPdfBenchmarkOptions.Default | Vrací ohraničené výchozí hodnoty pro zahřívání, měření, vykreslování, hašování, validaci opětovného otevření a vzorkování paměti |
TPdfBenchmarkCaseResult.IsPassed | Vrací True, když je stav případu pbsPassed |
TPdfBenchmarkReport.PassedCount / FailedCount / SkippedCount | Počítají výsledky podle koncového stavu |
TPdfBenchmarkReport.IsConformant | Vrací True jen tehdy, když běh nebyl zrušen a každý případ prošel |
TPdfBenchmarkReport.ToJson / ToCsv | Serializují kompletní zprávu do textu JSON nebo CSV |
TPdfBenchmarkReport.SaveJsonToFile / SaveCsvToFile | Zapíšou serializovanou zprávu do souboru UTF-8 |
RunPdfBenchmarkCorpus | Provádí plně popsané benchmarkové případy s požadovanými volbami a tokenem zrušení |
RunPdfBenchmarkFiles | Provádí seznam názvů souborů s použitím výchozích metadat případů a požadovaných voleb |
| Record | Public fields |
|---|---|
TPdfBenchmarkCase | Name, EnhancementId, FileName, Password, ExpectedSemanticHash a ExpectedPixelHash |
TPdfBenchmarkOptions | WarmupRuns, MeasuredRuns, MaxPages, RenderWidth, RenderHeight, MaxPixelsPerPage, RenderOptions, BackgroundColor, IncludeSemanticHash, IncludePixelHash, VerifyIndependentReopen, MemorySampleIntervalMs a StopOnFailure |
Každý zahřívací a měřený průchod otevře čerstvou instanci TPdf z cesty případu, načte ji přes normální API založené na PDFium, vykreslí ohraničenou podmnožinu stránek, spočte požadované hash, uloží do paměti a uvolní každý handle
Metrika první stránky kombinuje načtení dokumentu a první ohraničené vykreslení stránky, takže reprezentuje čas do prvních použitelných pixelů, nikoli jen stavbu parseru
Propustnost vykreslování používá měřený počet stránek a dobu vykreslování, zatímco MaxPages, RenderWidth, RenderHeight a MaxPixelsPerPage ohraničují práci před alokací bitmapy
Sémantický digest SHA-256 pokrývá pořadí stránek, rozměry stránek, rotace a text UTF-16, zatímco pixelový digest SHA-256 pokrývá deterministické rozměry bitmapy a bajty scanline
Když je povolena validace nezávislého opětovného otevření, uložené bajty se načtou do druhé instance TPdf a počet stránek, sémantický hash i pixelový hash musí odpovídat měřenému vstupnímu průchodu
Příklad selže, když se hash liší mezi měřenými běhy, očekávaný hash neodpovídá, nezávislé opětovné otevření změní sémantiku nebo pixely, načtení nebo ukládání selže, nebo ohraničená operace vyvolá chybu
| Field | Meaning |
|---|---|
InputBytes / SavedBytes | Délka zdrojového souboru a délka výstupu ukládání PDFium |
LoadMilliseconds | Průměrná měřená doba načtení dokumentu |
FirstPageMilliseconds | Průměrné načtení plus doba prvního ohraničeného vykreslení |
RenderMilliseconds / RenderPagesPerSecond | Průměrná doba ohraničeného vykreslení a odvozená propustnost stránek |
SaveMilliseconds / ReopenMilliseconds | Průměrné uložení do paměti a doba validace nezávislého opětovného otevření |
BaselineWorkingSetBytes / PeakWorkingSetBytes | Nejnižší výchozí hodnota a nejvyšší vzorkovaný working set procesu napříč měřenými průchody |
PeakWorkingSetIncreaseBytes | Největší vzorkovaný nárůst nad odpovídajícím výchozím stavem běhu |
SemanticHash / PixelHash | Digesty SHA-256 malými písmeny používané pro brány stability a očekávání korpusu |
ReopenSemanticHash / ReopenPixelHash | Identity spočtené z nezávisle znovu otevřeného uložení |
StableAcrossRuns | True, když každý měřený průchod produkuje tutéž sémantickou a pixelovou identitu |
IndependentReopenChecked / IndependentReopenSucceeded | Hlásí, zda byla vyžádána validace opětovného otevření a zda opětovné otevření uspělo |
EquivalentAfterReopen | True, když nezávisle znovu otevřené uložení zachová počet stránek a vybrané identity |
ExpectedSemanticHashMatched / ExpectedPixelHashMatched | Hlásí každou nakonfigurovanou bránu očekávání korpusu nezávisle |
| Record | Public fields |
|---|---|
TPdfBenchmarkCaseResult | Name, EnhancementId, FileName, Status, ErrorText, PageCount, PagesRendered, WarmupRuns a MeasuredRuns, kromě polí měření a bran uvedených výše |
TPdfBenchmarkReport | Results obsahuje uspořádané výsledky případů a Cancelled zaznamenává koncové zrušení |
TPdfBenchmarkOptions.Default povoluje sémantické a pixelové hash, kontroly nezávislého opětovného otevření, jeden zahřívací průchod, tři měřené průchody a ohraničené vykreslováníTPdfBenchmarkReport.IsConformant vrátí 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;