[clang] Introduce paged vector (PR #66430)

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 27 13:27:29 PDT 2023


================
@@ -1625,6 +1625,40 @@ SmallVector has grown a few other minor advantages over std::vector, causing
    and is no longer "private to the implementation". A name like
    ``SmallVectorHeader`` might be more appropriate.
 
+.. _dss_pagedvector:
+
+llvm/ADT/PagedVector.h
+^^^^^^^^^^^^^^^^^^^^^^
+
+``PagedVector<Type, PageSize>`` is a random access container that allocates
+``PageSize`` elements of type ``Type`` when the first element of a page is
+accessed via the ``operator[]``.  This is useful for cases where the number of
+elements is known in advance; their actual initialization is expensive; and
+they are sparsely used. This utility uses page-granular lazily initialization
+when the element is accessed. When the number of used pages is small
+significant memory savings can be achieved.
+
+The main advantage is that a ``PagedVector`` allows to delay the actual
+allocation of the page until it's needed, at the extra cost of one integer per
----------------
zygoloid wrote:

```suggestion
allocation of the page until it's needed, at the extra cost of one pointer per
```

https://github.com/llvm/llvm-project/pull/66430


More information about the cfe-commits mailing list