test: 微基准补纯对象字面量循环用例并推进版本

This commit is contained in:
2026-10-04 17:23:13 +00:00
parent f0d91610eb
commit 3d85af635b
3 changed files with 33 additions and 21 deletions
Generated
+18 -18
View File
@@ -1095,7 +1095,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_builtins" name = "oxide_builtins"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"chrono", "chrono",
"fast-float", "fast-float",
@@ -1120,7 +1120,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_bytecode" name = "oxide_bytecode"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"num-bigint", "num-bigint",
"oxide_log", "oxide_log",
@@ -1128,7 +1128,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_cfg" name = "oxide_cfg"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"oxide_bytecode", "oxide_bytecode",
"oxide_emit", "oxide_emit",
@@ -1139,7 +1139,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_cli" name = "oxide_cli"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"ansi_term", "ansi_term",
"bumpalo", "bumpalo",
@@ -1159,7 +1159,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_code_cache" name = "oxide_code_cache"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"lru", "lru",
"oxide_bytecode", "oxide_bytecode",
@@ -1168,7 +1168,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_compiler" name = "oxide_compiler"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"oxide_bytecode", "oxide_bytecode",
"oxide_cfg", "oxide_cfg",
@@ -1187,7 +1187,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_dce" name = "oxide_dce"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"oxide_bytecode", "oxide_bytecode",
"oxide_cfg", "oxide_cfg",
@@ -1201,7 +1201,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_emit" name = "oxide_emit"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"num-bigint", "num-bigint",
"oxc_allocator", "oxc_allocator",
@@ -1216,7 +1216,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_ir" name = "oxide_ir"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"oxide_bytecode", "oxide_bytecode",
"oxide_log", "oxide_log",
@@ -1225,7 +1225,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_kernel" name = "oxide_kernel"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"bumpalo", "bumpalo",
"dashmap", "dashmap",
@@ -1240,7 +1240,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_liveness" name = "oxide_liveness"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"oxide_bytecode", "oxide_bytecode",
"oxide_cfg", "oxide_cfg",
@@ -1252,7 +1252,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_log" name = "oxide_log"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"tracing", "tracing",
"tracing-appender", "tracing-appender",
@@ -1261,7 +1261,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_parser" name = "oxide_parser"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"oxc_allocator", "oxc_allocator",
"oxc_ast", "oxc_ast",
@@ -1276,7 +1276,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_regalloc" name = "oxide_regalloc"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"oxide_bytecode", "oxide_bytecode",
"oxide_cfg", "oxide_cfg",
@@ -1292,7 +1292,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_runtime_api" name = "oxide_runtime_api"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"num-bigint", "num-bigint",
"num-traits", "num-traits",
@@ -1304,7 +1304,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_test262" name = "oxide_test262"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"oxide_bytecode", "oxide_bytecode",
"oxide_compiler", "oxide_compiler",
@@ -1321,7 +1321,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_types" name = "oxide_types"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"bumpalo", "bumpalo",
"hashbrown 0.14.5", "hashbrown 0.14.5",
@@ -1333,7 +1333,7 @@ dependencies = [
[[package]] [[package]]
name = "oxide_vm" name = "oxide_vm"
version = "0.6.3" version = "0.6.4"
dependencies = [ dependencies = [
"bumpalo", "bumpalo",
"chrono", "chrono",
+1 -1
View File
@@ -22,7 +22,7 @@ members = [
] ]
[workspace.package] [workspace.package]
version = "0.6.3" version = "0.6.4"
edition = "2021" edition = "2021"
license = "MIT" license = "MIT"
rust-version = "1.80" rust-version = "1.80"
+14 -2
View File
@@ -1,6 +1,6 @@
//! 毫秒级热路径微基准套件:方向性过滤器,不是门禁。 //! 毫秒级热路径微基准套件:方向性过滤器,不是门禁。
//! //!
//! 十个 JS 循环用例加两个 intern 直调用例;JS 用例每用例 1 个预热 run 加 3 个测量 //! 十一个 JS 循环用例加两个 intern 直调用例;JS 用例每用例 1 个预热 run 加 3 个测量
//! run,每 run 均为同一模块的 `Vm::run`(新建 VM 共享同一 KernelCore,免每用例重建 //! run,每 run 均为同一模块的 `Vm::run`(新建 VM 共享同一 KernelCore,免每用例重建
//! builtin world),3 轮取中位;intern 用例为 Rust 直调,三轮各二万五千次取中位, //! builtin world),3 轮取中位;intern 用例为 Rust 直调,三轮各二万五千次取中位,
//! 未命中用例每轮换新键(同一键第二轮起走命中快路径,中位即被命中成本污染)。 //! 未命中用例每轮换新键(同一键第二轮起走命中快路径,中位即被命中成本污染)。
@@ -21,7 +21,7 @@
//! 预热 run 的作用是分配器、代码缓存与表代际预热,不是 IC 预热。 //! 预热 run 的作用是分配器、代码缓存与表代际预热,不是 IC 预热。
//! //!
//! 循环规模按「debug 全套件执行段 5 秒内」约束调参:debug 构建每指令税高(无内联、 //! 循环规模按「debug 全套件执行段 5 秒内」约束调参:debug 构建每指令税高(无内联、
//! 分派 match 开销主导),各用例单轮 30 至 130 毫秒,十二用例合计约 4.7 秒。 //! 分派 match 开销主导),各用例单轮 28 至 126 毫秒,十三用例合计约 4.8 秒。
//! 规模不是测量语义的一部分,方向判定只依赖相对变化,跨宿主对比绝对值无意义。 //! 规模不是测量语义的一部分,方向判定只依赖相对变化,跨宿主对比绝对值无意义。
//! //!
//! 日常入口 `cargo test -p oxide_vm micro`(名称过滤); //! 日常入口 `cargo test -p oxide_vm micro`(名称过滤);
@@ -235,6 +235,18 @@ fn micro_gc_churn() {
measure_case("gc_churn", &churn_kernel(), &module, 500, 250_500.0, true); measure_case("gc_churn", &churn_kernel(), &module, 500, 250_500.0, true);
} }
/// 纯对象字面量循环:两键字面量构造加属性读(gc_object 形态),覆盖对象构造
/// 热路径(静态键装载期预内部化、构造期直读侧表)与 GC churn。debug 实测每迭代
/// 约 77 微秒(端到端 gc_object 每迭代约 2.5 微秒的三十倍),按五秒预算取七百
/// 迭代(方向判定只依赖相对变化,规模不改变相对差)。
#[test]
fn micro_object_literal() {
let source = "var sum = 0; for (var i = 0; i < 700; i++) { \
var obj = { a: i, b: i * 2 }; sum += obj.a + obj.b; } sum";
let module = compile_module(source);
measure_case("object_literal", &shared_kernel(), &module, 700, 733_950.0, false);
}
// ── intern 直调用例(Rust 直调,分配成本微基准同款范式)────────────────────── // ── intern 直调用例(Rust 直调,分配成本微基准同款范式)──────────────────────
/// intern 直调固定次数:五万次。十万次口径下全套件执行段超五秒预算, /// intern 直调固定次数:五万次。十万次口径下全套件执行段超五秒预算,