In Qt 4, container classes like QVector introduced an optimization that transformed certain operations on contained objects into efficient byte-level manipulations. By identifying types that can be safely moved via a simple memory copy, Qt was able to streamline reallocations for specific data types like int
and QString
. This article explores the concept of trivial relocation, how Qt leverages it for optimized data manipulation, and the implications for different container structures and data types.
Qt and Trivial Relocation (Part 1)
by Giuseppe D'Angelo
From the article:
The container classes introduced in Qt 4 (Tulip, for the aficionados) had an interesting optimization: the ability to turn certain operations on the contained objects into byte-level manipulations.
Example: vector reallocation
Consider the reallocation of a
QVector<T>
: when the vector is full and we want to insert a new value (oftype T
), the vector has to allocate a bigger block of memory.
Add a Comment
Comments are closed.