Auto merge of #3638 - saethlin:big-alloc-bench, r=RalfJung

Add a benchmark for creating large uninit allocations

Extracted from https://github.com/rust-lang/miri/issues/3637

I used this program to confirm that https://github.com/rust-lang/rust/pull/125633 has the desired effect.
This commit is contained in:
bors 2024-05-29 17:49:40 +00:00
commit ec5327d0b7
3 changed files with 28 additions and 0 deletions

View File

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "big-allocs"
version = "0.1.0"

View File

@ -0,0 +1,8 @@
[package]
name = "big-allocs"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

View File

@ -0,0 +1,13 @@
//! This is a regression test for https://github.com/rust-lang/miri/issues/3637.
//! `Allocation`s are backed by a `Box<[u8]>`, which we create using `alloc_zeroed`, which should
//! make very large allocations cheap. But then we also need to not clone those `Allocation`s, or
//! we end up slow anyway.
fn main() {
// We can't use too big of an allocation or this code will encounter an allocation failure in
// CI. Since the allocation can't be huge, we need to do a few iterations so that the effect
// we're trying to measure is clearly visible above the interpreter's startup time.
for _ in 0..10 {
drop(Vec::<u8>::with_capacity(512 * 1024 * 1024));
}
}