• StefanBruens's avatar
    SplashXPathScanner: Optionally use small_vector from boost · 355fd8d5
    StefanBruens authored
    Currently, each row in the intersections vector is allocated separately,
    when the first intersection is added.
    
    To avoid these allocations for common simple polygons,
    boost::container::small_vector<4, T> is used, which stores up to
    4 intersections inline. small_vector is a header-only class.
    
    For the documents from #57 (fdo#96728) and #24 (fdo#78728), the
    runtime/memory is significantly reduced (according to /usr/bin/time -v):
    (1) $> pdftoppm -r 18 -aa no runsforever-poppler.pdf
    (2) $> pdftoppm surf-types.pdf
    
    Before/After
                                      runsforever-poppler |   surf-types
    User time (seconds):                2348.08 / 1773.53 |   7.76 /  5.02
    Maximum resident set size (kbytes):   46288 /   45896 |  14076 / 13748
    355fd8d5
Name
Last commit
Last update
.gitlab/merge_request_templates Loading commit data...
cmake/modules Loading commit data...
cpp Loading commit data...
fofi Loading commit data...
glib Loading commit data...
goo Loading commit data...
poppler Loading commit data...
qt5 Loading commit data...
regtest Loading commit data...
splash Loading commit data...
test Loading commit data...
utils Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gitlab-ci.yml Loading commit data...
AUTHORS Loading commit data...
CMakeLists.txt Loading commit data...
COPYING Loading commit data...
COPYING3 Loading commit data...
ConfigureChecks.cmake Loading commit data...
INSTALL Loading commit data...
NEWS Loading commit data...
README-XPDF Loading commit data...
README.contributors Loading commit data...
README.md Loading commit data...
config.h.cmake Loading commit data...
gtkdoc.py Loading commit data...
make-glib-api-docs Loading commit data...
poppler-cairo.pc.cmake Loading commit data...
poppler-cpp.pc.cmake Loading commit data...
poppler-glib.pc.cmake Loading commit data...
poppler-qt5.pc.cmake Loading commit data...
poppler-splash.pc.cmake Loading commit data...
poppler.pc.cmake Loading commit data...