183 static const size_t gSizes[][2] = {
185 {10 *
sizeof(
A), 20 *
sizeof(
A)},
186 {100 *
sizeof(
A), 100 *
sizeof(
A)},
187 {500 *
sizeof(
A), 500 *
sizeof(
A)},
188 {10000 *
sizeof(
A), 0},
189 {1, 100 *
sizeof(
A)},
193 static const float gCreateFraction[] = {1.f, .95f, 0.75f, .5f};
195 static const int kNumIters = 20000;
198 static const int kCheckPeriod = 500;
201 for (
size_t s = 0;
s < std::size(gSizes); ++
s) {
204 for (
size_t c = 0; c < std::size(gCreateFraction); ++c) {
206 for (
int i = 0; i < kNumIters; ++i) {
208 if (createOrDestroy < gCreateFraction[c] ||
209 0 == instanceRecs.
size()) {
216 Rec& rec = instanceRecs[
d];
221 if (0 == i % kCheckPeriod) {
223 for (
Rec& rec : instanceRecs) {
228 for (
Rec& rec : instanceRecs) {
230 delete rec.fInstance;
260 size_t origPoolSize =
pool.size();
261 while (
pool.size() == origPoolSize) {
262 r.add(
pool.allocate(31));
277 allocateMemory(*
pool, r);
283 constexpr size_t kPreallocSize = kSmallestMinAllocSize * 5;
290 constexpr size_t kMinAllocSize = kSmallestMinAllocSize * 7;
295 allocateMemory(*
pool, r);
298 allocateMemory(*
pool, r);
305 constexpr size_t kMinAllocSize = kSmallestMinAllocSize * 2;
311 constexpr size_t hugeSize = 10 * kMinAllocSize;
312 r.
add(
pool->allocate(hugeSize));
317 size_t hugeBlockSize =
pool->size();
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE auto & d