Commit 89dacd8eba529663ab9c410efffd698b3023a9d6
1 parent
522d2b22
Array optimization fixes performance issues (fixes #305, #311)
Showing
3 changed files
with
16 additions
and
7 deletions
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 |
TODO
manual/qpdf-manual.xml
| @@ -4482,6 +4482,14 @@ print "\n"; | @@ -4482,6 +4482,14 @@ print "\n"; | ||
| 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> |