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 2019-07-03 Jay Berkenbilt <ejb@ql.org> 9 2019-07-03 Jay Berkenbilt <ejb@ql.org>
2 10
3 * Non-compatible API change: change 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 Fuzz Errors 1 Fuzz Errors
9 =========== 2 ===========
10 3
manual/qpdf-manual.xml
@@ -4482,6 +4482,14 @@ print &quot;\n&quot;; @@ -4482,6 +4482,14 @@ print &quot;\n&quot;;
4482 </listitem> 4482 </listitem>
4483 <listitem> 4483 <listitem>
4484 <para> 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 A new helper method 4493 A new helper method
4486 <function>QUtil::read_file_into_memory</function> was added. 4494 <function>QUtil::read_file_into_memory</function> was added.
4487 </para> 4495 </para>