Initial Dever 0.0.1
This commit is contained in:
commit
81233d098c
1479 files changed
+163782
No files matched your search
@@ -0,0 +1,27 @@
|
||||
// 只编入 --memory 产物,复用原输入与两侧函数;普通计时产物不改变。
|
||||
// 全进程初始化和输入也会被探针计数,零次调用作为相同场景的基线。
|
||||
fn compare_output<const BORROW: bool, Input: ?Sized, Output: PartialEq + std::fmt::Debug>(name: &str, values: &Input, _: &Input, _: usize, generated: fn(&Input) -> Result<Output, Fault>, reference: fn(&Input) -> Result<Output, Fault>, score: fn(&Output) -> u64, reference_name: &str) {
|
||||
let selected = std::env::var("DEVER_HEAP_CASE").expect("DEVER_HEAP_CASE");
|
||||
if selected != name { return; }
|
||||
let implementation = std::env::var("DEVER_HEAP_IMPL").expect("DEVER_HEAP_IMPL");
|
||||
let count = std::env::var("DEVER_HEAP_COUNT").expect("DEVER_HEAP_COUNT").parse::<usize>().unwrap();
|
||||
let operation = if implementation == "dever" { generated } else {
|
||||
assert_eq!(implementation, reference_name);
|
||||
reference
|
||||
};
|
||||
let operation = black_box(operation);
|
||||
let mut checksum = 0u64;
|
||||
for _ in 0..count {
|
||||
let value = black_box(operation(black_box(values)).unwrap());
|
||||
checksum = checksum.wrapping_add(black_box(score(&value)));
|
||||
drop(value);
|
||||
}
|
||||
println!("heap,{name},{implementation},{count},{checksum}");
|
||||
// RSS 单独在未加载分配探针的进程读取,避免把探针静态表算进语言成本。
|
||||
if std::env::var_os("DEVER_HEAP_RSS").is_some() {
|
||||
let status = std::fs::read_to_string("/proc/self/status").unwrap();
|
||||
for line in status.lines().filter(|line| line.starts_with("VmRSS:") || line.starts_with("VmHWM:")) {
|
||||
println!("heap_rss,{line}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user