Benchmark new allocators in README figures and unify the 3 s budget#30
Merged
Conversation
Add best-fit, simulated annealing, tabu search, and telamalloc to the README benchmark figures: the hero Pareto plot grows from 8 to 11 allocators (greedy-by-area retired; the size and all variants already tell the greedy story), the quality plot now compares greedy (size), best-fit, tabu search, telamalloc, minimalloc, and supermalloc, and the scaling plot gains telamalloc (best-fit is omitted there because its curve coincides with greedy). Two palette roles are added: amber for the Python searchers and teal for telamalloc. Unify every time-bounded allocator on one default wall-clock budget: DEFAULT_MAX_SECONDS = 3.0 in allocators/base.py, mirrored by kDefaultMaxSeconds in src/cpp/allocators/defaults.hpp. Simulated annealing, tabu search, and telamalloc move from 2 s to 3 s; supermalloc and minimalloc from 10 s to 3 s. HillClimbAllocator and GeneticAllocator gain a max_seconds parameter (default 3 s, 0 disables it): hill climbing checks a monotonic deadline each iteration, and the genetic loop unrolls DEAP's eaSimple (verified RNG-identical) so it can stop between generations. The figure script consequently drops its per-allocator timeout plumbing and runs everything at library defaults. All assets are regenerated from a fresh run: supermalloc proves optimality on 10 of 13 hard problems within 3 s (down from 11 at 10 s) at 97.6% mean efficiency, and mm-G in the README allocation figure remains proven optimal. The 05 example now also exercises best-fit and telamalloc.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add best-fit, simulated annealing, tabu search, and telamalloc to the
README benchmark figures: the hero Pareto plot grows from 8 to 11
allocators (greedy-by-area retired; the size and all variants already
tell the greedy story), the quality plot now compares greedy (size),
best-fit, tabu search, telamalloc, minimalloc, and supermalloc, and the
scaling plot gains telamalloc (best-fit is omitted there because its
curve coincides with greedy). Two palette roles are added: amber for
the Python searchers and teal for telamalloc.
Unify every time-bounded allocator on one default wall-clock budget:
DEFAULT_MAX_SECONDS = 3.0 in allocators/base.py, mirrored by
kDefaultMaxSeconds in src/cpp/allocators/defaults.hpp. Simulated
annealing, tabu search, and telamalloc move from 2 s to 3 s;
supermalloc and minimalloc from 10 s to 3 s. HillClimbAllocator and
GeneticAllocator gain a max_seconds parameter (default 3 s, 0 disables
it): hill climbing checks a monotonic deadline each iteration, and the
genetic loop unrolls DEAP's eaSimple (verified RNG-identical) so it can
stop between generations. The figure script consequently drops its
per-allocator timeout plumbing and runs everything at library defaults.
All assets are regenerated from a fresh run: supermalloc proves
optimality on 10 of 13 hard problems within 3 s (down from 11 at 10 s)
at 97.6% mean efficiency, and mm-G in the README allocation figure
remains proven optimal. The 05 example now also exercises best-fit and
telamalloc.