aboutsummaryrefslogtreecommitdiffstats
path: root/manual
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-08-07 21:49:54 +0200
committerJay Berkenbilt <ejb@ql.org>2022-08-07 22:20:49 +0200
commitcef6425bcac678157f58e9eafabb7e63c5831d18 (patch)
tree3889207c93e092679f9b8d01084c5cc1f9d7794f /manual
parentda71dc6f37c69bdf708f1f9876e63ff348ae2296 (diff)
downloadqpdf-cef6425bcac678157f58e9eafabb7e63c5831d18.tar.zst
Disable QTC inside the library by default (fixes #714)
This results in measurable performance improvements to packaged binary libqpdf distributions. QTC remains available for library users and is still selectively enabled in CI.
Diffstat (limited to 'manual')
-rw-r--r--manual/installation.rst12
-rw-r--r--manual/release-notes.rst14
2 files changed, 26 insertions, 0 deletions
diff --git a/manual/installation.rst b/manual/installation.rst
index e02380ee..08c49765 100644
--- a/manual/installation.rst
+++ b/manual/installation.rst
@@ -257,6 +257,16 @@ CHECK_SIZES
that ensures an exact match between classes in ``sizes.cc`` and
classes in the library's public API. This option requires Python 3.
+ENABLE_QTC
+ This is off by default, except in maintainer mode. When off,
+ ``QTC::TC`` calls are compiled out by having ``QTC::TC`` be an empty
+ inline function. The underlying ``QTC::TC`` remains in the library,
+ so it is possible to build and package the qpdf library with
+ ``ENABLE_QTC`` turned off while still allowing developer code to use
+ ``QTC::TC`` if desired. If you are modifying qpdf code, it's a good
+ idea to have this on for more robust automated testing. Otherwise,
+ there's no reason to have it on.
+
GENERATE_AUTO_JOB
Some qpdf source files are automatically generated from
:file:`job.yml` and the CLI documentation. If you are adding new
@@ -297,6 +307,8 @@ MAINTAINER_MODE
- ``CHECK_SIZES``
+ - ``ENABLE_QTC``
+
- ``GENERATE_AUTO_JOB``
- ``WERROR``
diff --git a/manual/release-notes.rst b/manual/release-notes.rst
index ebbfd4f5..ab2c1d8e 100644
--- a/manual/release-notes.rst
+++ b/manual/release-notes.rst
@@ -7,6 +7,12 @@ For a detailed list of changes, please see the file
:file:`ChangeLog` in the source distribution.
11.0.0
+ - Performance improvements
+
+ - Many performance enhancements have been added. In developer
+ performance benchmarks, gains on the order of 20% have been
+ observed.
+
- Replacement of ``PointerHolder`` with ``std::shared_ptr``
- The qpdf-specific ``PointerHolder`` smart pointer implementation
@@ -231,6 +237,14 @@ For a detailed list of changes, please see the file
- The qpdf source code is now formatted automatically with
``clang-format``. See :ref:`code-formatting` for information.
+ - Test coverage with ``QTC`` is enabled during development but
+ compiled out of distributed qpdf binaries by default. This
+ results in a significant performance improvement, especially on
+ Windows. ``QTC::TC`` is still available in the library and is
+ still usable by end user code even though calls to it made
+ internally by the library are turned off. Internally, there is
+ some additional caching to reduce the overhead of repeatedly
+ reading environment variables at runtime.
10.6.3: March 8, 2022
- Announcement of upcoming change: