From cef6425bcac678157f58e9eafabb7e63c5831d18 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 7 Aug 2022 15:49:54 -0400 Subject: 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. --- manual/installation.rst | 12 ++++++++++++ manual/release-notes.rst | 14 ++++++++++++++ 2 files changed, 26 insertions(+) (limited to 'manual') 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: -- cgit v1.2.3-54-g00ecf