2022-07-05 11:26:52 +00:00
|
|
|
# Copyright (C) 2022 The Qt Company Ltd.
|
2022-08-19 13:21:34 +00:00
|
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
2022-07-05 11:26:52 +00:00
|
|
|
|
2020-07-08 09:35:43 +00:00
|
|
|
qt_commandline_option(doubleconversion TYPE enum VALUES no qt system)
|
|
|
|
qt_commandline_option(glib TYPE boolean)
|
|
|
|
qt_commandline_option(icu TYPE boolean)
|
|
|
|
qt_commandline_option(inotify TYPE boolean)
|
Add jemalloc support
Large graphical Qt applications heavily rely on heap allocations.
Jemalloc is a general-purpose malloc(3) implementation designed to
reduce heap fragmentation and improve scalability. It also provides
extensive tuning options.
Add a -jemalloc configure option, disabled by default. When enabled, Qt
and user code link to jemalloc, overriding the system's default
malloc().
Add cooperation with jemalloc for some Qt key classes: QArrayData (used
by QByteArray, QString and QList<T>), QBindingStoragePrivate,
QDataBuffer (used by the Qt Quick renderer), QDistanceFieldData,
QImageData, QObjectPrivate::TaggedSignalVector, QVarLengthArray.
This cooperation relies on two jemalloc-specific optimizations:
1. Efficient allocation via fittedMalloc():
Determine the actual allocation size using nallocx(), then adjust the
container’s capacity to match. This minimizes future reallocations.
Note: we round allocSize to a multiple of sizeof(T) to ensure that
we can later recompute the exact allocation size during deallocation.
2. Optimized deallocation via sizedFree():
Use sdallocx(), which is faster than free when the allocation size
is known, as it avoids internal size lookups.
Adapt the QVarLengthArray auto tests on capacity.
Non-standard functions docs are at https://jemalloc.net/jemalloc.3.html
[ChangeLog][QtCore] Added optional support for the jemalloc allocator,
and optimized memory allocations and deallocations in core Qt classes to
cooperate with it.
Change-Id: I6166e64e66876dee22662d3f3ea3e42a6647cfeb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2025-01-24 16:09:58 +00:00
|
|
|
qt_commandline_option(jemalloc TYPE boolean)
|
2020-07-08 09:35:43 +00:00
|
|
|
qt_commandline_option(journald TYPE boolean)
|
|
|
|
qt_commandline_option(libb2 TYPE enum VALUES no qt system)
|
|
|
|
qt_commandline_option(mimetype-database TYPE boolean)
|
2022-11-14 11:16:28 +00:00
|
|
|
qt_commandline_option(mimetype-database-compression TYPE optionalString VALUES zstd gzip none)
|
2020-07-08 09:35:43 +00:00
|
|
|
qt_commandline_option(pcre TYPE enum VALUES no qt system)
|
|
|
|
qt_commandline_option(posix-ipc TYPE boolean NAME ipc_posix)
|
|
|
|
qt_commandline_option(pps TYPE boolean NAME qqnx_pps)
|
|
|
|
qt_commandline_option(slog2 TYPE boolean)
|
|
|
|
qt_commandline_option(syslog TYPE boolean)
|
2022-10-24 08:30:56 +00:00
|
|
|
qt_commandline_option(trace TYPE optionalString VALUES etw lttng ctf no yes)
|