Pamięć podręczna relacji AcroForm
HotPDF utrzymuje lokalny dla dokumentu dwukierunkowy indeks końcowych pól AcroForm, kwalifikowanych nazw pól, adnotacji widgetów, numerów porządkowych widgetów i pozycji stron
Zachowanie wyszukiwania
Lookup po indeksie pola i nazwie kwalifikowanej używa po pierwszej budowie bezpośrednich tablic i mapy nazw open-addressed bez rozróżniania wielkości liter
Pole nadrzędne może dostarczać odziedziczone wpisy /FT, /Ff i /Opt, nie będąc polem terminalnym; nazwane dzieci typu group.a i group.b pozostają osobnymi, indeksowanymi polami
Wyszukiwanie po indeksie pola i po kwalifikowanej nazwie używa bezpośrednich tablic oraz mapy nazw o otwartym adresowaniu bez rozróżniania wielkości liter po pierwszym zbudowaniu
GetLoadedFormFieldWidgetPageIndex rozwiązuje jeden numer porządkowy widgetu na jego stronę, podczas gdy GetLoadedFormFieldIndexForAnnotation odwzorowuje adnotację strony z powrotem na jej pole i numer porządkowy widgetu
Członkostwo w tablicy adnotacji ma pierwszeństwo przed wpisem widgetu /P, a pierwsza pasująca strona w kolejności dokumentu wygrywa w przypadku nieprawidłowego zduplikowanego członkostwa
Widgety pominięte w /AcroForm /Fields są indeksowane jako osierocone do celów diagnostycznych, ale nie są udostępniane jako syntetyczne pola formularza
Budowanie i mutacja
Pamięć podręczna jest budowana leniwie w jednym przejściu drzewa pól oraz jednym przejściu adnotacji stron
Tworzenie załadowanego pola rozszerza prawidłową pamięć podręczną przyrostowo, podczas gdy usuwanie pola, zmiana nazwy, przenoszenie widgetu, usuwanie adnotacji, rejestracja scalania, scalanie pól XFA i mutacja tablicy stron unieważniają ją przed zmianą grafu
Następne zapytanie o relacje przebudowuje się z bieżącego grafu obiektów, w tym widgety, których wpis /P jest nieobecny
Usunięcie jednego dziecka terminalnego usuwa jego własne widgety i wpis w drzewie pól, zachowując rodzeństwo i jego odziedziczone ustawienia
Wywołaj InvalidateLoadedFormRelationshipCache po zmianie słowników AcroForm, pola, widgetu, strony /Annots, /Parent, /Kids lub /P przez surowe API obiektów
Wydajność i własność
Mapy nazw i obiektów utrzymują współczynnik obciążenia poniżej jednej drugiej i zapewniają oczekiwany ciepły czas wyszukiwania stały czasowo
Bramka regresji buduje 10 000 załadowanych pól, dowodzi liniowej telemetrii przejścia i wymaga, aby powtarzane wyszukiwanie nazw było co najmniej 100 razy szybsze niż zimne budowanie plus wyszukiwanie na Win32 i Win64
Pamięć podręczna przechowuje nieposiadające wskaźniki obiektów, a dostęp do grafu załadowanego dokumentu pozostaje serializowany przez wywołującego
Zobacz też: GetLoadedFormFieldWidgetPageIndex, GetLoadedFormFieldIndexForAnnotation, InvalidateLoadedFormRelationshipCache, GetLoadedFormRelationshipCacheStatistics