在尝试编写优化的DSP算法时,我想知道堆栈分配和堆分配之间的相对速度以及堆栈分配数组的大小限制。我意识到有一个堆栈帧大小限制,但我不明白为什么下面的代码会运行并生成看似真实的基准测试结果,但在使用cargo test --release
运行时会失败并出现堆栈溢出。
#![feature(test)]
extern crate test;
#[cfg(test)]
mod tests {
use test::Bencher;
#[bench]
fn it_works(b: &mut Bencher) {
b.iter(|| { let stack = [[[0.0; 2]; 512]; 512]; });
}
}