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;
rfpIgnore, eski hoşgörülü davranışı korurrfpReport, desteklenmeyen operator'leri, eksik kaynakları, geçersiz nesneleri, decode hatalarını, recursion sınırlarını ve desteklenmeyen nesne türlerini kaydederrfpStrict,BXveEXuyumluluk bölümü dışındaki ilk fallback'te hata fırlatırTHotPDF.RenderFallbackDiagnosticLimit, tutulan tanılamaları sınırlarTHotPDF.LastRenderFallbackDroppedCount, yapılandırılan sınır aşıldıktan sonra atlanan tanılamaları raporlar
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