Commit 89dacd8eba529663ab9c410efffd698b3023a9d6

Authored by Jay Berkenbilt
1 parent 522d2b22

Array optimization fixes performance issues (fixes #305, #311)

ChangeLog
  1 +2019-08-17 Jay Berkenbilt <ejb@ql.org>
  2 +
  3 + * Change internal implementation of QPDF arrays to use sparse
  4 + arrays, which results in using much less memory for arrays with
  5 + large numbers of nulls. Various files have been encountered in the
  6 + wild that contains thousands of arrays with millions of nulls.
  7 + Fixes #305, #311.
  8 +
1 9 2019-07-03 Jay Berkenbilt <ejb@ql.org>
2 10  
3 11 * Non-compatible API change: change
... ...
1   -Performance
2   -===========
3   -
4   -There is some performance problem that happens with some large files.
5   -Issues 305 and 311 both seem to be examples of this. Files saved in
6   -../misc/bugs.
7   -
8 1 Fuzz Errors
9 2 ===========
10 3  
... ...
manual/qpdf-manual.xml
... ... @@ -4482,6 +4482,14 @@ print &quot;\n&quot;;
4482 4482 </listitem>
4483 4483 <listitem>
4484 4484 <para>
  4485 + The underlying implementation of QPDF arrays has been
  4486 + enhanced to be much more memory efficient when dealing with
  4487 + arrays with lots of nulls. This enables qpdf to use
  4488 + drastically less memory for certain types of files.
  4489 + </para>
  4490 + </listitem>
  4491 + <listitem>
  4492 + <para>
4485 4493 A new helper method
4486 4494 <function>QUtil::read_file_into_memory</function> was added.
4487 4495 </para>
... ...