Commit 3cacb27a90cf332e7e978e925bb615c17f567ee3
1 parent
bddebdb0
Performance fix on preserveObjectStreams
Showing
2 changed files
with
12 additions
and
2 deletions
ChangeLog
| 1 | +2021-05-09 Jay Berkenbilt <ejb@ql.org> | ||
| 2 | + | ||
| 3 | + * Improve performance of preservation of object streams by | ||
| 4 | + avoiding unnecessary traversal of objects when there are no object | ||
| 5 | + streams. | ||
| 6 | + | ||
| 1 | 2021-05-08 Jay Berkenbilt <ejb@ql.org> | 7 | 2021-05-08 Jay Berkenbilt <ejb@ql.org> |
| 2 | 8 | ||
| 3 | * 10.3.2: release | 9 | * 10.3.2: release |
libqpdf/QPDFWriter.cc
| @@ -2361,6 +2361,12 @@ QPDFWriter::initializeSpecialStreams() | @@ -2361,6 +2361,12 @@ QPDFWriter::initializeSpecialStreams() | ||
| 2361 | void | 2361 | void |
| 2362 | QPDFWriter::preserveObjectStreams() | 2362 | QPDFWriter::preserveObjectStreams() |
| 2363 | { | 2363 | { |
| 2364 | + std::map<int, int> omap; | ||
| 2365 | + QPDF::Writer::getObjectStreamData(this->m->pdf, omap); | ||
| 2366 | + if (omap.empty()) | ||
| 2367 | + { | ||
| 2368 | + return; | ||
| 2369 | + } | ||
| 2364 | // Our object_to_object_stream map has to map ObjGen -> ObjGen | 2370 | // Our object_to_object_stream map has to map ObjGen -> ObjGen |
| 2365 | // since we may be generating object streams out of old objects | 2371 | // since we may be generating object streams out of old objects |
| 2366 | // that have generation numbers greater than zero. However in an | 2372 | // that have generation numbers greater than zero. However in an |
| @@ -2380,8 +2386,6 @@ QPDFWriter::preserveObjectStreams() | @@ -2380,8 +2386,6 @@ QPDFWriter::preserveObjectStreams() | ||
| 2380 | } | 2386 | } |
| 2381 | QTC::TC("qpdf", "QPDFWriter preserve object streams", | 2387 | QTC::TC("qpdf", "QPDFWriter preserve object streams", |
| 2382 | this->m->preserve_unreferenced_objects ? 0 : 1); | 2388 | this->m->preserve_unreferenced_objects ? 0 : 1); |
| 2383 | - std::map<int, int> omap; | ||
| 2384 | - QPDF::Writer::getObjectStreamData(this->m->pdf, omap); | ||
| 2385 | for (auto iter: omap) | 2389 | for (auto iter: omap) |
| 2386 | { | 2390 | { |
| 2387 | QPDFObjGen og(iter.first, 0); | 2391 | QPDFObjGen og(iter.first, 0); |