PDFium Delphi Component Docs

FPdfBenchmark jednotka

Jednotka: FPdfBenchmark
Provádí opakovatelná výkonnostní měření PDF a konformní brány bez sdílení handles dokumentu, stránky, formuláře nebo bitmapy mezi průchody

Syntaxe

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;

Veřejné typy

TypeDescription
TPdfBenchmarkStatusKoncový stav s pbsPassed, pbsFailed nebo pbsSkipped
TPdfBenchmarkCaseVstupní cesta, volitelné heslo, identifikátor rozšíření, zobrazovaný název a volitelné očekávané sémantické a pixelové hash
TPdfBenchmarkCasesDynamické pole hodnot TPdfBenchmarkCase
TPdfBenchmarkOptionsPoč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í
TPdfBenchmarkCaseResultVý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í
TPdfBenchmarkCaseResultsDynamické pole hodnot TPdfBenchmarkCaseResult
TPdfBenchmarkReportUspořádané výsledky případů s agregovanými čítači, konformním stavem, exportem JSON a exportem CSV

Funkce a metody záznamů

MemberDescription
PdfBenchmarkStatusNameVrací stabilní zobrazovaný název pro hodnotu TPdfBenchmarkStatus
TPdfBenchmarkCase.FromFileVytvoří případ z cesty k souboru s volitelným identifikátorem rozšíření a zobrazovaným názvem
TPdfBenchmarkOptions.DefaultVrací 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.IsPassedVrací True, když je stav případu pbsPassed
TPdfBenchmarkReport.PassedCount / FailedCount / SkippedCountPočítají výsledky podle koncového stavu
TPdfBenchmarkReport.IsConformantVrací True jen tehdy, když běh nebyl zrušen a každý případ prošel
TPdfBenchmarkReport.ToJson / ToCsvSerializují kompletní zprávu do textu JSON nebo CSV
TPdfBenchmarkReport.SaveJsonToFile / SaveCsvToFileZapíšou serializovanou zprávu do souboru UTF-8
RunPdfBenchmarkCorpusProvádí plně popsané benchmarkové případy s požadovanými volbami a tokenem zrušení
RunPdfBenchmarkFilesProvádí seznam názvů souborů s použitím výchozích metadat případů a požadovaných voleb

Pole záznamů a voleb

RecordPublic fields
TPdfBenchmarkCaseName, EnhancementId, FileName, Password, ExpectedSemanticHash a ExpectedPixelHash
TPdfBenchmarkOptionsWarmupRuns, MeasuredRuns, MaxPages, RenderWidth, RenderHeight, MaxPixelsPerPage, RenderOptions, BackgroundColor, IncludeSemanticHash, IncludePixelHash, VerifyIndependentReopen, MemorySampleIntervalMs a StopOnFailure

Model měření

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

Pole výsledků

FieldMeaning
InputBytes / SavedBytesDélka zdrojového souboru a délka výstupu ukládání PDFium
LoadMillisecondsPrůměrná měřená doba načtení dokumentu
FirstPageMillisecondsPrůměrné načtení plus doba prvního ohraničeného vykreslení
RenderMilliseconds / RenderPagesPerSecondPrůměrná doba ohraničeného vykreslení a odvozená propustnost stránek
SaveMilliseconds / ReopenMillisecondsPrůměrné uložení do paměti a doba validace nezávislého opětovného otevření
BaselineWorkingSetBytes / PeakWorkingSetBytesNejnižší výchozí hodnota a nejvyšší vzorkovaný working set procesu napříč měřenými průchody
PeakWorkingSetIncreaseBytesNejvětší vzorkovaný nárůst nad odpovídajícím výchozím stavem běhu
SemanticHash / PixelHashDigesty SHA-256 malými písmeny používané pro brány stability a očekávání korpusu
ReopenSemanticHash / ReopenPixelHashIdentity spočtené z nezávisle znovu otevřeného uložení
StableAcrossRunsTrue, když každý měřený průchod produkuje tutéž sémantickou a pixelovou identitu
IndependentReopenChecked / IndependentReopenSucceededHlásí, zda byla vyžádána validace opětovného otevření a zda opětovné otevření uspělo
EquivalentAfterReopenTrue, když nezávisle znovu otevřené uložení zachová počet stránek a vybrané identity
ExpectedSemanticHashMatched / ExpectedPixelHashMatchedHlásí každou nakonfigurovanou bránu očekávání korpusu nezávisle

Pole identity zprávy a výsledků

RecordPublic fields
TPdfBenchmarkCaseResultName, EnhancementId, FileName, Status, ErrorText, PageCount, PagesRendered, WarmupRuns a MeasuredRuns, kromě polí měření a bran uvedených výše
TPdfBenchmarkReportResults obsahuje uspořádané výsledky případů a Cancelled zaznamenává koncové zrušení

Poznámky

Příklad

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;