Render Tanılamaları ve İşlem Telemetrisi

HotPDF, sayfa piksellerini değiştirebilecek çağıran açısından görünen her duruma göre render edilmiş sayfa cache girdilerini ayırır ve sayfa içeriği tam render edilemediğinde sınırlı tanılamalar sunar

Durum duyarlı cache varyantları

THotPDF.RenderLoadedPageToBitmapCached, bellek girdilerini sayfa, DPI, etkili optional-content görünürlüğü, THotPDF.RenderColourIntent ve THotPDF.RenderFallbackPolicy değerlerine göre anahtarlar

Kalıcı cache aynı state digest'ini kullanır; tanılama üreten fallback modları ise yalnızca bellekte kalır, böylece diskten gelen bir isabet atlanan nesne raporlarını kaybedemez

Bir optional-content grubunu değiştirmek, önceki bitmap'i silmek yerine başka bir varyant seçer; böylece bir katmana veya renk intent'ine geri dönmek önceki işi yeniden kullanabilir

Renk intent

PDF.RenderColourIntent := rciRelativeColorimetric;
Bitmap := PDF.RenderLoadedPageToBitmapCached(0, 144);

rciDocument, her content-stream ri operator'üne saygı duyar ve varsayılan olarak kalır

Dört açık değer content-stream intent seçimini geçersiz kılar ve sonraki ICCBased fill ile stroke dönüşümlerine uygulanır

Fallback politikası

PDF.RenderFallbackPolicy := rfpReport;
PDF.RenderFallbackDiagnosticLimit := 256;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
Diagnostics := PDF.GetLastRenderFallbackDiagnostics;

THotPDF.GetLastRenderFallbackDiagnostics tutulan kümeyi döndürür, THotPDF.ClearLastRenderFallbackDiagnostics ise onu temizler; cache'lenen report-mode girdileri tanılama kümelerini korur, böylece bir bellek cache isabeti ilk render ile aynı render tamamlanma bilgisini döndürür

Birleşik işlem telemetrisi

if PDF.GetLastOperationTelemetry(Info) then
begin
  WriteLn(Info.OperationName);
  WriteLn(Info.ElapsedMilliseconds);
  WriteLn(Info.CPUTimeMicroseconds);
  WriteLn(Info.PeakProcessMemoryBytes);
  WriteLn(Info.MemorySchedulerWaitMilliseconds);
  WriteLn(Info.DecodeExpansionPermille);
end;

THotPDF.GetLastOperationTelemetry; wall time, geçerli thread CPU zamanı, bellek, allocation, process I/O, filter decode, cache, nesne sayısı, başarı ve iptal metriklerini içeren bir THPDFOperationTelemetry record'u döndürür

Belge yükleme, senkron ve cache'lenmiş sayfa render'ı, progressive render dilimleri, seçici stream optimizasyonu ve paralel görsel optimizasyonu aynı record biçimini yayınlar

PeakMemoryBytes, işletim sisteminin process working set'i değil taşınabilir bir belge işlemi tahminidir; bu yüzden makineler arasında kararlı kalır ve yüklenen kaynak baytlarını, render edilen bitmap girdilerini, decode edilmiş görsel cache ağırlığını ve zirve filter-chain depolamasını içerir

PeakProcessMemoryBytes örneklenmiş en büyük process working set'idir; AllocationCount ise yaşam boyu allocation toplamı değil, işlem başlangıcına göre eşzamanlı canlı Delphi memory-manager bloklarında örneklenmiş en büyük artıştır

CPUTimeMicroseconds çağıran thread'i ölçer; ReadIOBytes, WriteIOBytes ve OtherIOBytes ise process genelinde sayaç farklarıdır ve bu yüzden aynı process içindeki eşzamanlı işleri de içerebilir

DecodeInputBytes sıkıştırılmış girdi, DecodeOutputBytes son filter-chain çıktısı, DecodedBytes ise her filter aşamasındaki toplam iştir; DecodeExpansionPermille son çıktıyı girdiye böler, 1000 değeri 1x'i temsil eder

ScheduledMemoryBytes işlem kabul tahminidir, MemorySchedulerWaitMilliseconds kuyruk süresini kaydeder, MemorySchedulerDelayed ise kuyruğa alınmış kabulü allocation'sız fast path'ten ayırır

Bellek ve allocation zirveleri işlem sınırlarında, filter-chain tamamlanmasında, progressive dilimlerde ve iptal kontrol noktalarında örneklenir; bu yüzden bunlar instruction-level profiler izleri değil düşük maliyetli operasyonel sinyallerdir

İlgili API'ler