From 1b81c09cd6d56f73538942399a823dd2fcb70b60 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Sun, 4 Oct 2026 15:17:20 +0000 Subject: [PATCH] =?UTF-8?q?bench:=20=E4=B8=BB=E5=88=A4=E6=94=B9=E7=A1=AE?= =?UTF-8?q?=E5=AE=9A=E6=80=A7=E5=88=97=E9=9B=B6=E5=AE=B9=E5=B7=AE=E5=B9=B6?= =?UTF-8?q?=E9=87=8D=E9=94=9A=E5=85=A8=E8=B0=B1=E5=9F=BA=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BENCHMARK_BASELINE.md | 172 ++-- Cargo.lock | 36 +- Cargo.toml | 2 +- benchmark_baseline.json | 1002 +++++++++++------------ crates/oxide_cli/src/bench/baseline.rs | 34 +- crates/oxide_cli/src/bench/js_stress.rs | 22 +- crates/oxide_cli/src/bench/output.rs | 12 + 7 files changed, 669 insertions(+), 611 deletions(-) diff --git a/BENCHMARK_BASELINE.md b/BENCHMARK_BASELINE.md index 11ade3d5..579d165f 100644 --- a/BENCHMARK_BASELINE.md +++ b/BENCHMARK_BASELINE.md @@ -1,81 +1,81 @@ Test Name Wall(ms) Comp(ms) Exec(ms) Instrs GC Ct IC Rate Sess Objs Sess B Peak B Ret B ------------------------------------------------------------------------------------------------------------------------------------------------------ -arith_ops 292.31 0.330 291.981 4700023 0 0.0% 0 0 0 0 -array_filter 671.88 0.332 671.545 55739 1 99.9% 1586 364264 417620 2744 -array_for_each 687.85 0.368 687.482 35737 1 99.9% 1536 354168 425828 960 -array_index_get 126.51 0.299 126.214 1817037 0 99.9% 0 38000 38000 8160 -array_index_set 97.82 0.277 97.541 1517035 0 99.9% 0 38000 38000 8160 -array_join 519.66 0.286 519.374 4140029 0 100.0% 0 9380000 9380000 291 -array_literal 88.53 0.235 88.297 1500025 0 100.0% 0 0 184 184 -array_map 640.06 0.344 639.717 55739 1 99.9% 1586 367464 417620 4344 -array_push_pop 1256.85 0.294 1256.556 10200029 0 100.0% 0 20900000 20900000 472 -array_reduce 669.22 0.351 668.863 57739 1 99.9% 1536 354200 425828 1960 -array_slice 75.83 0.321 75.510 79739 0 99.9% 0 10401800 10401800 4344 -array_sort 132.42 0.335 132.087 17939 0 99.7% 1000 1888800 1888800 4344 -branch_if 144.76 0.253 144.506 2816690 0 0.0% 0 0 0 0 -branch_switch 138.35 0.300 138.046 3000023 0 0.0% 0 0 0 0 -call_args 95.90 0.349 95.549 880029 0 0.0% 2 307 595 595 -call_closure 68.26 0.281 67.977 500044 0 0.0% 4 613 1221 1221 -call_method 76.85 0.269 76.581 580032 0 50.0% 2 307 771 771 -call_new_proto 137.85 0.301 137.553 800037 0 33.3% 4 614 1390 1390 -call_recursion 997.96 0.288 997.675 5527429 1 0.0% 3 1027 1027 595 -call_this 127.50 0.347 127.147 780034 0 50.0% 4 624 1384 1384 -cmp_ops 423.75 0.241 423.503 5800025 0 0.0% 0 0 0 0 -code_forge 782.39 0.233 782.152 110018 0 0.0% 10000 1651670 1651670 0 -coercion_boolean 255.43 0.256 255.171 4450023 0 0.0% 0 0 0 0 -coercion_concat 196.16 0.296 195.865 2300025 0 0.0% 0 3888890 3888890 39 -coercion_nullish 359.31 0.314 359.001 5100032 0 50.0% 0 0 168 168 -coercion_tonumber 138.29 0.280 138.014 2600023 0 0.0% 0 0 0 0 -coercion_toprimitive 200.85 0.325 200.521 500025 1 0.0% 18343 4075840 9604479 1591 -coercion_tostring 375.71 0.311 375.396 4600025 0 0.0% 0 22200000 22200000 186 -gc_array 568.75 0.326 568.420 4390027 0 100.0% 0 9500000 9500000 560 -gc_object 129.88 0.276 129.604 1550025 0 100.0% 0 0 176 176 -gc_string 39.54 0.228 39.310 460025 0 0.0% 0 788890 788890 40 -gc_string_long 2015.98 0.196 2015.788 23000025 2 0.0% 0 7334531 33554441 41 -ic_cache 53.16 0.419 52.736 554039 0 78.9% 0 380000 1802832 1802832 -ic_polymorphic 226.85 0.371 226.484 4033387 0 100.0% 0 0 552 552 -loop_do_while 235.37 0.231 235.138 3000019 0 0.0% 0 0 0 0 -loop_for 1201.43 0.236 1201.195 16000023 0 0.0% 0 0 0 0 -loop_for_in 637.77 0.521 637.250 7591739 0 0.0% 0 3490 3490 960 -loop_for_of 311.52 0.490 311.026 3652739 0 99.0% 0 111800 111800 960 -loop_for_of_string 217.30 0.319 216.984 2726339 0 0.0% 0 58150 58150 132 -loop_index 410.42 0.370 410.048 6367739 0 100.0% 0 3800 3800 960 -loop_while 1213.66 0.224 1213.438 16000023 0 0.0% 0 0 0 0 -loop_while_index 424.75 0.595 424.150 6667739 0 100.0% 0 3800 3800 960 -map_ops 768.64 0.496 768.140 12650027 0 100.0% 0 0 672 672 -math_ops 458.98 0.399 458.576 6500023 0 0.0% 0 0 0 0 -mem_array_grow 384.49 0.276 384.214 3800024 0 0.0% 0 0 8160 8160 -mem_closure_chain 124.14 0.569 123.574 590034 0 0.0% 40000 6718890 10479658 10479658 -mem_cross_call_retain 256.70 0.385 256.314 1590032 0 25.0% 2 3810453 8431077 8431077 -mem_map_retain 59.05 0.260 58.788 600021 0 100.0% 0 1977780 6436740 6436740 -mem_object_graph 120.98 0.356 120.624 884727 0 0.0% 2 312 6029720 6029720 -mem_set_retain 43.20 0.223 42.975 460021 0 100.0% 0 1088890 4769098 4769098 -mem_string_accum 109.56 0.222 109.333 960020 0 0.0% 0 2744473 3064633 3064633 -mem_string_rope 2.29 0.188 2.101 16025 6 0.0% 0 124184000 124184000 124184000 -member_compound 303.24 0.340 302.896 4400076 0 100.0% 0 0 1064 1064 -object_keys 492.55 0.441 492.113 3740027 0 100.0% 0 13800000 13800000 320 -prop_access 170.65 0.278 170.374 2800036 0 100.0% 0 0 192 192 -prop_bracket 161.16 0.295 160.861 2100036 0 100.0% 0 0 184 184 -prop_delete 55.56 0.297 55.259 480034 0 50.0% 0 0 184 184 -prop_dynamic 77.61 0.272 77.341 1100028 0 100.0% 0 0 168 168 -prop_nested 136.23 0.282 135.945 1550025 0 100.0% 0 0 504 504 -prop_set 204.89 0.235 204.654 3200032 0 100.0% 0 0 176 176 -property 150.99 0.305 150.680 111035 0 0.0% 0 231780 231780 24160 -set_ops 668.58 0.288 668.288 9950027 0 90.9% 0 0 288 288 -string_build 1735.11 0.391 1734.715 16560027 4 0.0% 0 6791197 33554520 122 -string_case 185.22 0.249 184.970 1600028 0 0.0% 0 7600000 7600000 0 -string_char 299.02 0.247 298.770 3800025 0 0.0% 0 0 0 0 -string_concat 172.78 0.352 172.422 1800031 0 0.0% 0 1900000 1900000 38 -string_indexof 87.36 0.215 87.144 1100028 0 0.0% 0 0 0 0 -string_replace 53.14 0.288 52.852 600030 0 0.0% 0 1320000 1320000 66 -string_replace_fn 789.77 0.408 789.367 64987 3 0.0% 294 1619217 33571047 12433 -string_split 99.13 0.249 98.877 540030 0 100.0% 0 17160000 17160000 1226 -string_substring 122.30 0.259 122.040 1500030 0 0.0% 0 2150000 2150000 43 -string_trim 41.73 0.207 41.521 460028 0 0.0% 0 1560000 1560000 0 -try_catch_ok 57.60 0.226 57.379 1050023 0 0.0% 0 0 0 0 -try_catch_throw 51.63 0.289 51.346 580023 0 0.0% 0 720000 720000 0 -typeof_ops 284.89 0.226 284.660 4300023 0 0.0% 0 0 0 0 -unary_ops 271.73 0.318 271.415 3700023 0 0.0% 0 0 0 0 +arith_ops 300.00 0.415 299.588 4700023 0 0.0% 0 0 0 0 +array_filter 649.68 0.390 649.286 55739 0 99.9% 208001 28479960 28479960 3416 +array_for_each 680.13 0.389 679.740 35737 0 99.9% 204001 27887960 27887960 1184 +array_index_get 128.42 0.317 128.104 1817037 0 99.9% 1 38160 38160 8352 +array_index_set 99.04 0.459 98.580 1517035 0 99.9% 1 38160 38160 8352 +array_join 528.47 0.292 528.180 4140029 0 100.0% 20000 12580000 12580000 339 +array_literal 88.14 0.277 87.860 1500025 0 100.0% 50000 9200000 9200000 184 +array_map 631.64 0.342 631.297 55739 0 99.9% 208001 30079960 30079960 4568 +array_push_pop 1302.72 0.315 1302.406 10200029 0 100.0% 50000 28900000 28900000 552 +array_reduce 641.32 0.397 640.924 57739 0 99.9% 204001 27887960 27887960 2384 +array_slice 80.96 0.400 80.562 79739 0 99.9% 6001 13689960 13689960 4568 +array_sort 136.78 0.392 136.393 17939 0 99.7% 51501 9168960 9168960 4568 +branch_if 149.12 0.265 148.857 2816690 0 0.0% 0 0 0 0 +branch_switch 146.85 0.331 146.522 3000023 0 0.0% 0 0 0 0 +call_args 97.78 0.382 97.402 880029 0 0.0% 20002 2720307 2720307 715 +call_closure 68.18 0.380 67.797 500044 0 0.0% 20005 2720749 2720749 1461 +call_method 76.45 0.276 76.173 580032 0 50.0% 20003 2720443 2720443 907 +call_new_proto 140.64 0.319 140.319 800037 0 33.3% 60004 8160614 8160614 1694 +call_recursion 1099.77 0.312 1099.453 5527429 2 0.0% 147881 20112435 33554499 715 +call_this 127.80 0.362 127.435 780034 0 50.0% 40005 5440760 5440760 1632 +cmp_ops 440.02 0.251 439.772 5800025 0 0.0% 0 0 0 0 +code_forge 806.48 0.271 806.205 110018 0 0.0% 10000 1651670 1651670 0 +coercion_boolean 258.77 0.253 258.515 4450023 0 0.0% 0 0 0 0 +coercion_concat 198.97 0.413 198.552 2300025 0 0.0% 0 3888890 3888890 39 +coercion_nullish 357.27 0.354 356.913 5100032 0 50.0% 1 136 192 192 +coercion_tonumber 144.87 0.392 144.476 2600023 0 0.0% 0 0 0 0 +coercion_toprimitive 182.30 0.424 181.880 500025 0 0.0% 120000 17900000 17900000 1815 +coercion_tostring 392.12 0.346 391.769 4600025 0 0.0% 0 22200000 22200000 186 +gc_array 598.43 0.309 598.119 4390027 0 100.0% 5000 10300000 10300000 672 +gc_object 122.77 0.294 122.479 1550025 0 100.0% 50000 6800000 6800000 192 +gc_string 40.93 0.241 40.691 460025 0 0.0% 0 788890 788890 40 +gc_string_long 2088.95 0.234 2088.711 23000025 2 0.0% 0 7334531 33554441 41 +ic_cache 56.96 0.447 56.508 554039 0 78.9% 10001 1740160 2051232 2051232 +ic_polymorphic 234.59 0.387 234.205 4033387 0 100.0% 3 408 576 576 +loop_do_while 244.85 0.260 244.590 3000019 0 0.0% 0 0 0 0 +loop_for 1230.76 0.366 1230.393 16000023 0 0.0% 0 0 0 0 +loop_for_in 645.85 0.589 645.258 7591739 0 0.0% 1 3626 3626 1184 +loop_for_of 320.69 0.576 320.110 3652739 0 99.0% 6001 927960 927960 1184 +loop_for_of_string 245.23 0.418 244.811 2726339 0 0.0% 3000 466150 466150 132 +loop_index 424.71 0.471 424.236 6367739 0 100.0% 1 3960 3960 1184 +loop_while 1267.14 0.314 1266.828 16000023 0 0.0% 0 0 0 0 +loop_while_index 425.69 0.693 424.997 6667739 0 100.0% 1 3960 3960 1184 +map_ops 783.05 0.476 782.577 12650027 0 100.0% 100000 17200000 17200000 816 +math_ops 466.85 0.456 466.398 6500023 0 0.0% 0 0 0 0 +mem_array_grow 386.97 0.287 386.680 3800024 0 0.0% 1 160 2097312 2097312 +mem_closure_chain 140.77 0.650 140.116 590034 0 0.0% 80000 12558890 12558890 10079778 +mem_cross_call_retain 261.00 0.521 260.477 1590032 0 25.0% 60004 11970749 11970749 8693357 +mem_map_retain 64.64 0.292 64.343 600021 0 100.0% 20002 4698124 7063172 7063172 +mem_object_graph 123.41 0.363 123.041 884727 0 0.0% 65536 8912936 8912936 6291984 +mem_set_retain 46.82 0.235 46.588 460021 0 100.0% 20002 3809234 5158474 5158474 +mem_string_accum 109.54 0.232 109.311 960020 0 0.0% 1 2744633 3268921 3268921 +mem_string_rope 2.37 0.236 2.137 16025 6 0.0% 0 124184000 124184000 124184000 +member_compound 309.91 0.412 309.496 4400076 0 100.0% 6 872 1152 1152 +object_keys 484.57 0.456 484.118 3740027 0 100.0% 20000 18360000 18360000 416 +prop_access 171.26 0.380 170.881 2800036 0 100.0% 1 136 192 192 +prop_bracket 160.98 0.423 160.559 2100036 0 100.0% 1 136 192 192 +prop_delete 55.56 0.427 55.130 480034 0 50.0% 1 136 192 192 +prop_dynamic 77.89 0.301 77.589 1100028 0 100.0% 1 136 192 192 +prop_nested 132.86 0.347 132.517 1550025 0 100.0% 150000 20400000 20400000 576 +prop_set 206.53 0.272 206.255 3200032 0 100.0% 1 136 192 192 +property 154.87 0.414 154.459 111035 0 0.0% 1 231916 231916 32928 +set_ops 683.32 0.399 682.919 9950027 0 90.9% 100000 17200000 17200000 320 +string_build 1809.32 0.451 1808.872 16560027 4 0.0% 0 6791197 33554520 122 +string_case 186.69 0.359 186.329 1600028 0 0.0% 0 7600000 7600000 0 +string_char 311.22 0.266 310.953 3800025 0 0.0% 0 0 0 0 +string_concat 176.82 0.378 176.445 1800031 0 0.0% 0 1900000 1900000 38 +string_indexof 85.99 0.241 85.752 1100028 0 0.0% 0 0 0 0 +string_replace 55.86 0.353 55.510 600030 0 0.0% 0 1320000 1320000 66 +string_replace_fn 776.00 0.451 775.546 64987 3 0.0% 210 17604583 33586009 12641 +string_split 104.25 0.340 103.908 540030 0 100.0% 20000 24520000 24520000 1226 +string_substring 126.26 0.342 125.919 1500030 0 0.0% 0 2150000 2150000 43 +string_trim 43.86 0.253 43.607 460028 0 0.0% 0 1560000 1560000 0 +try_catch_ok 58.22 0.255 57.961 1050023 0 0.0% 0 0 0 0 +try_catch_throw 53.50 0.319 53.183 580023 0 0.0% 20000 3440000 3440000 0 +typeof_ops 311.13 0.250 310.880 4300023 0 0.0% 100000 13600000 13600000 0 +unary_ops 284.57 0.314 284.253 3700023 0 0.0% 0 0 0 0 内存基准用例(mem_*): @@ -87,7 +87,19 @@ unary_ops 271.73 0.318 271.415 370002 mem_map_retain 原生盒边持有:Map 持 20000 组字符串键 + 对象值 mem_set_retain 原生盒边持有:Set 持 20000 个对象(各带 payload 字符串) mem_string_rope 拼接 rope 链留存:重复二元拼接形成深 Cons 链(账目按逻辑长度计,数值高于实际足迹) -口径:Peak B/Ret B 为 session 堆账目(对象头 + 堆数据 + 存活串/BigInt);JSON 的 -`epoch_objects`/`epoch_bytes` 为恒零锚字段(epoch 分配器退役后保留 schema 兼容), -不计入字节账目。Peak B 为顶层指令边界采样的 session arena 高水位;单指令内瞬态 -不计。Ret B 为 workload 后强制完整 GC 的真存活集。 +口径:Peak B/Ret B 为 session 堆账目(对象头 + 堆数据 + 存活串);BigInt 不入 +该账目,由单 run 分配公式按表长单列。epoch arena 的临时驻留不计入字节账目 +(数量列恒零)。Peak B 为顶层指令边界采样的 session 堆账目高水位;单指令内瞬态 +与 epoch 高水位不计。Ret B 为 workload 后晋升 + 完整 GC 的真存活集,至多含一份 +引擎内部副本:逃逸屏障留 epoch 原件且顶层寄存器根不回写时,测量时晋升会把原件 +再克隆一份(object_graph 见留存锚测试)。 + +A/B 判据口径: + + 主判(回归门):确定性列——指令数、内存账目(session/peak/retained)、 + 垃圾回收计数、内联缓存计数——跨运行逐字节一致,零容差,双向任何变化即信号; + 基线对比的退出码 1 只认这些列。 + 次判(墙时间):wall/exec/compile/gc_collection 列在 ±5% 带内(固定核、 + warmup 2、三轮中位);基线对比容差 0.50,信息性,不影响退出码。 + 基线文件是陈旧锚(安静树单次快照),不是 A/B 仪器;A/B 是同机同宿主 + 严格交错对比。 diff --git a/Cargo.lock b/Cargo.lock index 06fd0eb3..e8e526a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1095,7 +1095,7 @@ dependencies = [ [[package]] name = "oxide_builtins" -version = "0.5.0" +version = "0.6.1" dependencies = [ "chrono", "fast-float", @@ -1120,7 +1120,7 @@ dependencies = [ [[package]] name = "oxide_bytecode" -version = "0.5.0" +version = "0.6.1" dependencies = [ "num-bigint", "oxide_log", @@ -1128,7 +1128,7 @@ dependencies = [ [[package]] name = "oxide_cfg" -version = "0.5.0" +version = "0.6.1" dependencies = [ "oxide_bytecode", "oxide_emit", @@ -1139,7 +1139,7 @@ dependencies = [ [[package]] name = "oxide_cli" -version = "0.5.0" +version = "0.6.1" dependencies = [ "ansi_term", "bumpalo", @@ -1159,7 +1159,7 @@ dependencies = [ [[package]] name = "oxide_code_cache" -version = "0.5.0" +version = "0.6.1" dependencies = [ "lru", "oxide_bytecode", @@ -1168,7 +1168,7 @@ dependencies = [ [[package]] name = "oxide_compiler" -version = "0.5.0" +version = "0.6.1" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1187,7 +1187,7 @@ dependencies = [ [[package]] name = "oxide_dce" -version = "0.5.0" +version = "0.6.1" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1201,7 +1201,7 @@ dependencies = [ [[package]] name = "oxide_emit" -version = "0.5.0" +version = "0.6.1" dependencies = [ "num-bigint", "oxc_allocator", @@ -1216,7 +1216,7 @@ dependencies = [ [[package]] name = "oxide_ir" -version = "0.5.0" +version = "0.6.1" dependencies = [ "oxide_bytecode", "oxide_log", @@ -1225,7 +1225,7 @@ dependencies = [ [[package]] name = "oxide_kernel" -version = "0.5.0" +version = "0.6.1" dependencies = [ "bumpalo", "dashmap", @@ -1240,7 +1240,7 @@ dependencies = [ [[package]] name = "oxide_liveness" -version = "0.5.0" +version = "0.6.1" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1252,7 +1252,7 @@ dependencies = [ [[package]] name = "oxide_log" -version = "0.5.0" +version = "0.6.1" dependencies = [ "tracing", "tracing-appender", @@ -1261,7 +1261,7 @@ dependencies = [ [[package]] name = "oxide_parser" -version = "0.5.0" +version = "0.6.1" dependencies = [ "oxc_allocator", "oxc_ast", @@ -1276,7 +1276,7 @@ dependencies = [ [[package]] name = "oxide_regalloc" -version = "0.5.0" +version = "0.6.1" dependencies = [ "oxide_bytecode", "oxide_cfg", @@ -1292,7 +1292,7 @@ dependencies = [ [[package]] name = "oxide_runtime_api" -version = "0.5.0" +version = "0.6.1" dependencies = [ "num-bigint", "num-traits", @@ -1304,7 +1304,7 @@ dependencies = [ [[package]] name = "oxide_test262" -version = "0.5.0" +version = "0.6.1" dependencies = [ "oxide_bytecode", "oxide_compiler", @@ -1321,7 +1321,7 @@ dependencies = [ [[package]] name = "oxide_types" -version = "0.5.0" +version = "0.6.1" dependencies = [ "bumpalo", "hashbrown 0.14.5", @@ -1333,7 +1333,7 @@ dependencies = [ [[package]] name = "oxide_vm" -version = "0.5.0" +version = "0.6.1" dependencies = [ "bumpalo", "chrono", diff --git a/Cargo.toml b/Cargo.toml index cccebcdd..dccabf6a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ members = [ ] [workspace.package] -version = "0.5.0" +version = "0.6.1" edition = "2021" license = "MIT" rust-version = "1.80" diff --git a/benchmark_baseline.json b/benchmark_baseline.json index 36ff8e20..fd47e575 100644 --- a/benchmark_baseline.json +++ b/benchmark_baseline.json @@ -1,7 +1,7 @@ [ { "test_name": "arith_ops", - "wall_time_us": 292312, + "wall_time_us": 300003, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -11,8 +11,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 4700023, - "compile_time_us": 330, - "exec_time_us": 291981, + "compile_time_us": 415, + "exec_time_us": 299588, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -22,238 +22,238 @@ }, { "test_name": "array_filter", - "wall_time_us": 671878, - "session_objects": 1586, - "session_bytes": 364264, - "epoch_objects": 80580, + "wall_time_us": 649677, + "session_objects": 208001, + "session_bytes": 28479960, + "epoch_objects": 0, "epoch_bytes": 0, - "gc_trigger_count": 1, - "gc_bytes_freed": 40143328, - "gc_objects_scanned": 125845, - "gc_collection_us": 49011, + "gc_trigger_count": 0, + "gc_bytes_freed": 0, + "gc_objects_scanned": 0, + "gc_collection_us": 0, "instruction_count": 55739, - "compile_time_us": 332, - "exec_time_us": 671545, + "compile_time_us": 390, + "exec_time_us": 649286, "ic_hit_rate": 0.9990476190476192, "ic_hits": 2098, "ic_misses": 2, - "peak_bytes": 417620, - "retained_bytes": 2744, + "peak_bytes": 28479960, + "retained_bytes": 3416, "retained_objects": 2 }, { "test_name": "array_for_each", - "wall_time_us": 687851, - "session_objects": 1536, - "session_bytes": 354168, - "epoch_objects": 76600, + "wall_time_us": 680129, + "session_objects": 204001, + "session_bytes": 27887960, + "epoch_objects": 0, "epoch_bytes": 0, - "gc_trigger_count": 1, - "gc_bytes_freed": 38353088, - "gc_objects_scanned": 125871, - "gc_collection_us": 41080, + "gc_trigger_count": 0, + "gc_bytes_freed": 0, + "gc_objects_scanned": 0, + "gc_collection_us": 0, "instruction_count": 35737, - "compile_time_us": 368, - "exec_time_us": 687482, + "compile_time_us": 389, + "exec_time_us": 679740, "ic_hit_rate": 0.9990476190476192, "ic_hits": 2098, "ic_misses": 2, - "peak_bytes": 425828, - "retained_bytes": 960, + "peak_bytes": 27887960, + "retained_bytes": 1184, "retained_objects": 1 }, { "test_name": "array_index_get", - "wall_time_us": 126514, - "session_objects": 0, - "session_bytes": 38000, - "epoch_objects": 1, + "wall_time_us": 128421, + "session_objects": 1, + "session_bytes": 38160, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 1817037, - "compile_time_us": 299, - "exec_time_us": 126214, + "compile_time_us": 317, + "exec_time_us": 128104, "ic_hit_rate": 0.999, "ic_hits": 999, "ic_misses": 1, - "peak_bytes": 38000, - "retained_bytes": 8160, + "peak_bytes": 38160, + "retained_bytes": 8352, "retained_objects": 1 }, { "test_name": "array_index_set", - "wall_time_us": 97819, - "session_objects": 0, - "session_bytes": 38000, - "epoch_objects": 1, + "wall_time_us": 99040, + "session_objects": 1, + "session_bytes": 38160, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 1517035, - "compile_time_us": 277, - "exec_time_us": 97541, + "compile_time_us": 459, + "exec_time_us": 98580, "ic_hit_rate": 0.999, "ic_hits": 999, "ic_misses": 1, - "peak_bytes": 38000, - "retained_bytes": 8160, + "peak_bytes": 38160, + "retained_bytes": 8352, "retained_objects": 1 }, { "test_name": "array_join", - "wall_time_us": 519660, - "session_objects": 0, - "session_bytes": 9380000, - "epoch_objects": 20000, + "wall_time_us": 528473, + "session_objects": 20000, + "session_bytes": 12580000, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 4140029, - "compile_time_us": 286, - "exec_time_us": 519374, + "compile_time_us": 292, + "exec_time_us": 528180, "ic_hit_rate": 0.999990909090909, "ic_hits": 219998, "ic_misses": 2, - "peak_bytes": 9380000, - "retained_bytes": 291, + "peak_bytes": 12580000, + "retained_bytes": 339, "retained_objects": 1 }, { "test_name": "array_literal", - "wall_time_us": 88533, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 50000, + "wall_time_us": 88137, + "session_objects": 50000, + "session_bytes": 9200000, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 1500025, - "compile_time_us": 235, - "exec_time_us": 88297, + "compile_time_us": 277, + "exec_time_us": 87860, "ic_hit_rate": 0.9999800000000001, "ic_hits": 49999, "ic_misses": 1, - "peak_bytes": 184, + "peak_bytes": 9200000, "retained_bytes": 184, "retained_objects": 1 }, { "test_name": "array_map", - "wall_time_us": 640061, - "session_objects": 1586, - "session_bytes": 367464, - "epoch_objects": 80580, + "wall_time_us": 631640, + "session_objects": 208001, + "session_bytes": 30079960, + "epoch_objects": 0, "epoch_bytes": 0, - "gc_trigger_count": 1, - "gc_bytes_freed": 41537248, - "gc_objects_scanned": 125845, - "gc_collection_us": 38435, + "gc_trigger_count": 0, + "gc_bytes_freed": 0, + "gc_objects_scanned": 0, + "gc_collection_us": 0, "instruction_count": 55739, - "compile_time_us": 344, - "exec_time_us": 639717, + "compile_time_us": 342, + "exec_time_us": 631297, "ic_hit_rate": 0.9990476190476192, "ic_hits": 2098, "ic_misses": 2, - "peak_bytes": 417620, - "retained_bytes": 4344, + "peak_bytes": 30079960, + "retained_bytes": 4568, "retained_objects": 2 }, { "test_name": "array_push_pop", - "wall_time_us": 1256851, - "session_objects": 0, - "session_bytes": 20900000, - "epoch_objects": 50000, + "wall_time_us": 1302721, + "session_objects": 50000, + "session_bytes": 28900000, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 10200029, - "compile_time_us": 294, - "exec_time_us": 1256556, + "compile_time_us": 315, + "exec_time_us": 1302406, "ic_hit_rate": 0.9999963636363637, "ic_hits": 549998, "ic_misses": 2, - "peak_bytes": 20900000, - "retained_bytes": 472, + "peak_bytes": 28900000, + "retained_bytes": 552, "retained_objects": 1 }, { "test_name": "array_reduce", - "wall_time_us": 669215, - "session_objects": 1536, - "session_bytes": 354200, - "epoch_objects": 76600, + "wall_time_us": 641321, + "session_objects": 204001, + "session_bytes": 27887960, + "epoch_objects": 0, "epoch_bytes": 0, - "gc_trigger_count": 1, - "gc_bytes_freed": 44276288, - "gc_objects_scanned": 125871, - "gc_collection_us": 44781, + "gc_trigger_count": 0, + "gc_bytes_freed": 0, + "gc_objects_scanned": 0, + "gc_collection_us": 0, "instruction_count": 57739, - "compile_time_us": 351, - "exec_time_us": 668863, + "compile_time_us": 397, + "exec_time_us": 640924, "ic_hit_rate": 0.9990476190476192, "ic_hits": 2098, "ic_misses": 2, - "peak_bytes": 425828, - "retained_bytes": 1960, + "peak_bytes": 27887960, + "retained_bytes": 2384, "retained_objects": 4 }, { "test_name": "array_slice", - "wall_time_us": 75831, - "session_objects": 0, - "session_bytes": 10401800, - "epoch_objects": 6001, + "wall_time_us": 80962, + "session_objects": 6001, + "session_bytes": 13689960, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 79739, - "compile_time_us": 321, - "exec_time_us": 75510, + "compile_time_us": 400, + "exec_time_us": 80562, "ic_hit_rate": 0.9993548387096775, "ic_hits": 3098, "ic_misses": 2, - "peak_bytes": 10401800, - "retained_bytes": 4344, + "peak_bytes": 13689960, + "retained_bytes": 4568, "retained_objects": 2 }, { "test_name": "array_sort", - "wall_time_us": 132422, - "session_objects": 1000, - "session_bytes": 1888800, - "epoch_objects": 50501, + "wall_time_us": 136785, + "session_objects": 51501, + "session_bytes": 9168960, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 17939, - "compile_time_us": 335, - "exec_time_us": 132087, + "compile_time_us": 392, + "exec_time_us": 136393, "ic_hit_rate": 0.9966666666666667, "ic_hits": 598, "ic_misses": 2, - "peak_bytes": 1888800, - "retained_bytes": 4344, + "peak_bytes": 9168960, + "retained_bytes": 4568, "retained_objects": 2 }, { "test_name": "branch_if", - "wall_time_us": 144759, + "wall_time_us": 149123, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -263,8 +263,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 2816690, - "compile_time_us": 253, - "exec_time_us": 144506, + "compile_time_us": 265, + "exec_time_us": 148857, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -274,7 +274,7 @@ }, { "test_name": "branch_switch", - "wall_time_us": 138347, + "wall_time_us": 146853, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -284,8 +284,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 3000023, - "compile_time_us": 300, - "exec_time_us": 138046, + "compile_time_us": 331, + "exec_time_us": 146522, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -295,133 +295,133 @@ }, { "test_name": "call_args", - "wall_time_us": 95898, - "session_objects": 2, - "session_bytes": 307, - "epoch_objects": 20000, + "wall_time_us": 97785, + "session_objects": 20002, + "session_bytes": 2720307, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 880029, - "compile_time_us": 349, - "exec_time_us": 95549, + "compile_time_us": 382, + "exec_time_us": 97402, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, - "peak_bytes": 595, - "retained_bytes": 595, + "peak_bytes": 2720307, + "retained_bytes": 715, "retained_objects": 2 }, { "test_name": "call_closure", - "wall_time_us": 68258, - "session_objects": 4, - "session_bytes": 613, - "epoch_objects": 20001, + "wall_time_us": 68177, + "session_objects": 20005, + "session_bytes": 2720749, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 500044, - "compile_time_us": 281, - "exec_time_us": 67977, + "compile_time_us": 380, + "exec_time_us": 67797, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, - "peak_bytes": 1221, - "retained_bytes": 1221, + "peak_bytes": 2720749, + "retained_bytes": 1461, "retained_objects": 4 }, { "test_name": "call_method", - "wall_time_us": 76850, - "session_objects": 2, - "session_bytes": 307, - "epoch_objects": 20001, + "wall_time_us": 76449, + "session_objects": 20003, + "session_bytes": 2720443, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 580032, - "compile_time_us": 269, - "exec_time_us": 76581, + "compile_time_us": 276, + "exec_time_us": 76173, "ic_hit_rate": 0.49997499999999995, "ic_hits": 19999, "ic_misses": 20001, - "peak_bytes": 771, - "retained_bytes": 771, + "peak_bytes": 2720443, + "retained_bytes": 907, "retained_objects": 3 }, { "test_name": "call_new_proto", - "wall_time_us": 137855, - "session_objects": 4, - "session_bytes": 614, - "epoch_objects": 60000, + "wall_time_us": 140639, + "session_objects": 60004, + "session_bytes": 8160614, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 800037, - "compile_time_us": 301, - "exec_time_us": 137553, + "compile_time_us": 319, + "exec_time_us": 140319, "ic_hit_rate": 0.33331666666666665, "ic_hits": 19999, "ic_misses": 40001, - "peak_bytes": 1390, - "retained_bytes": 1390, + "peak_bytes": 8160614, + "retained_bytes": 1694, "retained_objects": 5 }, { "test_name": "call_recursion", - "wall_time_us": 997963, - "session_objects": 3, - "session_bytes": 1027, - "epoch_objects": 147893, + "wall_time_us": 1099766, + "session_objects": 147881, + "session_bytes": 20112435, + "epoch_objects": 0, "epoch_bytes": 0, - "gc_trigger_count": 1, - "gc_bytes_freed": 43420432, - "gc_objects_scanned": 246710, - "gc_collection_us": 52511, + "gc_trigger_count": 2, + "gc_bytes_freed": 76976952, + "gc_objects_scanned": 246724, + "gc_collection_us": 127849, "instruction_count": 5527429, - "compile_time_us": 288, - "exec_time_us": 997675, + "compile_time_us": 312, + "exec_time_us": 1099453, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, - "peak_bytes": 1027, - "retained_bytes": 595, + "peak_bytes": 33554499, + "retained_bytes": 715, "retained_objects": 2 }, { "test_name": "call_this", - "wall_time_us": 127495, - "session_objects": 4, - "session_bytes": 624, - "epoch_objects": 40001, + "wall_time_us": 127797, + "session_objects": 40005, + "session_bytes": 5440760, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 780034, - "compile_time_us": 347, - "exec_time_us": 127147, + "compile_time_us": 362, + "exec_time_us": 127435, "ic_hit_rate": 0.49997499999999995, "ic_hits": 39998, "ic_misses": 40002, - "peak_bytes": 1384, - "retained_bytes": 1384, + "peak_bytes": 5440760, + "retained_bytes": 1632, "retained_objects": 5 }, { "test_name": "cmp_ops", - "wall_time_us": 423745, + "wall_time_us": 440023, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -431,8 +431,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 5800025, - "compile_time_us": 241, - "exec_time_us": 423503, + "compile_time_us": 251, + "exec_time_us": 439772, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -442,7 +442,7 @@ }, { "test_name": "code_forge", - "wall_time_us": 782386, + "wall_time_us": 806477, "session_objects": 10000, "session_bytes": 1651670, "epoch_objects": 0, @@ -452,8 +452,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 110018, - "compile_time_us": 233, - "exec_time_us": 782152, + "compile_time_us": 271, + "exec_time_us": 806205, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -463,7 +463,7 @@ }, { "test_name": "coercion_boolean", - "wall_time_us": 255428, + "wall_time_us": 258769, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -473,8 +473,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 4450023, - "compile_time_us": 256, - "exec_time_us": 255171, + "compile_time_us": 253, + "exec_time_us": 258515, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -484,7 +484,7 @@ }, { "test_name": "coercion_concat", - "wall_time_us": 196162, + "wall_time_us": 198965, "session_objects": 0, "session_bytes": 3888890, "epoch_objects": 0, @@ -494,8 +494,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 2300025, - "compile_time_us": 296, - "exec_time_us": 195865, + "compile_time_us": 413, + "exec_time_us": 198552, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -505,28 +505,28 @@ }, { "test_name": "coercion_nullish", - "wall_time_us": 359315, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 1, + "wall_time_us": 357268, + "session_objects": 1, + "session_bytes": 136, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 5100032, - "compile_time_us": 314, - "exec_time_us": 359001, + "compile_time_us": 354, + "exec_time_us": 356913, "ic_hit_rate": 0.4999950000000001, "ic_hits": 99999, "ic_misses": 100001, - "peak_bytes": 168, - "retained_bytes": 168, + "peak_bytes": 192, + "retained_bytes": 192, "retained_objects": 1 }, { "test_name": "coercion_tonumber", - "wall_time_us": 138294, + "wall_time_us": 144869, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -536,8 +536,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 2600023, - "compile_time_us": 280, - "exec_time_us": 138014, + "compile_time_us": 392, + "exec_time_us": 144476, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -547,28 +547,28 @@ }, { "test_name": "coercion_toprimitive", - "wall_time_us": 200846, - "session_objects": 18343, - "session_bytes": 4075840, - "epoch_objects": 9167, + "wall_time_us": 182304, + "session_objects": 120000, + "session_bytes": 17900000, + "epoch_objects": 0, "epoch_bytes": 0, - "gc_trigger_count": 1, - "gc_bytes_freed": 22567848, - "gc_objects_scanned": 92502, - "gc_collection_us": 23229, + "gc_trigger_count": 0, + "gc_bytes_freed": 0, + "gc_objects_scanned": 0, + "gc_collection_us": 0, "instruction_count": 500025, - "compile_time_us": 325, - "exec_time_us": 200521, + "compile_time_us": 424, + "exec_time_us": 181880, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, - "peak_bytes": 9604479, - "retained_bytes": 1591, + "peak_bytes": 17900000, + "retained_bytes": 1815, "retained_objects": 6 }, { "test_name": "coercion_tostring", - "wall_time_us": 375707, + "wall_time_us": 392116, "session_objects": 0, "session_bytes": 22200000, "epoch_objects": 0, @@ -578,8 +578,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 4600025, - "compile_time_us": 311, - "exec_time_us": 375396, + "compile_time_us": 346, + "exec_time_us": 391769, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -589,49 +589,49 @@ }, { "test_name": "gc_array", - "wall_time_us": 568747, - "session_objects": 0, - "session_bytes": 9500000, - "epoch_objects": 5000, + "wall_time_us": 598428, + "session_objects": 5000, + "session_bytes": 10300000, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 4390027, - "compile_time_us": 326, - "exec_time_us": 568420, + "compile_time_us": 309, + "exec_time_us": 598119, "ic_hit_rate": 0.9999921568627451, "ic_hits": 254998, "ic_misses": 2, - "peak_bytes": 9500000, - "retained_bytes": 560, + "peak_bytes": 10300000, + "retained_bytes": 672, "retained_objects": 1 }, { "test_name": "gc_object", - "wall_time_us": 129880, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 50000, + "wall_time_us": 122773, + "session_objects": 50000, + "session_bytes": 6800000, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 1550025, - "compile_time_us": 276, - "exec_time_us": 129604, + "compile_time_us": 294, + "exec_time_us": 122479, "ic_hit_rate": 0.9999800000000001, "ic_hits": 99998, "ic_misses": 2, - "peak_bytes": 176, - "retained_bytes": 176, + "peak_bytes": 6800000, + "retained_bytes": 192, "retained_objects": 1 }, { "test_name": "gc_string", - "wall_time_us": 39538, + "wall_time_us": 40933, "session_objects": 0, "session_bytes": 788890, "epoch_objects": 0, @@ -641,8 +641,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 460025, - "compile_time_us": 228, - "exec_time_us": 39310, + "compile_time_us": 241, + "exec_time_us": 40691, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -652,7 +652,7 @@ }, { "test_name": "gc_string_long", - "wall_time_us": 2015985, + "wall_time_us": 2088946, "session_objects": 0, "session_bytes": 7334531, "epoch_objects": 0, @@ -660,10 +660,10 @@ "gc_trigger_count": 2, "gc_bytes_freed": 0, "gc_objects_scanned": 0, - "gc_collection_us": 1004, + "gc_collection_us": 1256, "instruction_count": 23000025, - "compile_time_us": 196, - "exec_time_us": 2015788, + "compile_time_us": 234, + "exec_time_us": 2088711, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -673,49 +673,49 @@ }, { "test_name": "ic_cache", - "wall_time_us": 53156, - "session_objects": 0, - "session_bytes": 380000, - "epoch_objects": 10001, + "wall_time_us": 56956, + "session_objects": 10001, + "session_bytes": 1740160, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 554039, - "compile_time_us": 419, - "exec_time_us": 52736, + "compile_time_us": 447, + "exec_time_us": 56508, "ic_hit_rate": 0.7892555459066867, "ic_hits": 19995, "ic_misses": 5339, - "peak_bytes": 1802832, - "retained_bytes": 1802832, + "peak_bytes": 2051232, + "retained_bytes": 2051232, "retained_objects": 10001 }, { "test_name": "ic_polymorphic", - "wall_time_us": 226855, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 3, + "wall_time_us": 234592, + "session_objects": 3, + "session_bytes": 408, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 4033387, - "compile_time_us": 371, - "exec_time_us": 226484, + "compile_time_us": 387, + "exec_time_us": 234205, "ic_hit_rate": 0.9999900000000002, "ic_hits": 299997, "ic_misses": 3, - "peak_bytes": 552, - "retained_bytes": 552, + "peak_bytes": 576, + "retained_bytes": 576, "retained_objects": 3 }, { "test_name": "loop_do_while", - "wall_time_us": 235370, + "wall_time_us": 244851, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -725,8 +725,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 3000019, - "compile_time_us": 231, - "exec_time_us": 235138, + "compile_time_us": 260, + "exec_time_us": 244590, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -736,7 +736,7 @@ }, { "test_name": "loop_for", - "wall_time_us": 1201431, + "wall_time_us": 1230759, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -746,8 +746,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 16000023, - "compile_time_us": 236, - "exec_time_us": 1201195, + "compile_time_us": 366, + "exec_time_us": 1230393, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -757,91 +757,91 @@ }, { "test_name": "loop_for_in", - "wall_time_us": 637771, - "session_objects": 0, - "session_bytes": 3490, - "epoch_objects": 1, + "wall_time_us": 645848, + "session_objects": 1, + "session_bytes": 3626, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 7591739, - "compile_time_us": 521, - "exec_time_us": 637250, + "compile_time_us": 589, + "exec_time_us": 645258, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, - "peak_bytes": 3490, - "retained_bytes": 960, + "peak_bytes": 3626, + "retained_bytes": 1184, "retained_objects": 1 }, { "test_name": "loop_for_of", - "wall_time_us": 311517, - "session_objects": 0, - "session_bytes": 111800, - "epoch_objects": 6001, + "wall_time_us": 320686, + "session_objects": 6001, + "session_bytes": 927960, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 3652739, - "compile_time_us": 490, - "exec_time_us": 311026, + "compile_time_us": 576, + "exec_time_us": 320110, "ic_hit_rate": 0.99, "ic_hits": 99, "ic_misses": 1, - "peak_bytes": 111800, - "retained_bytes": 960, + "peak_bytes": 927960, + "retained_bytes": 1184, "retained_objects": 1 }, { "test_name": "loop_for_of_string", - "wall_time_us": 217303, - "session_objects": 0, - "session_bytes": 58150, - "epoch_objects": 3000, + "wall_time_us": 245230, + "session_objects": 3000, + "session_bytes": 466150, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 2726339, - "compile_time_us": 319, - "exec_time_us": 216984, + "compile_time_us": 418, + "exec_time_us": 244811, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, - "peak_bytes": 58150, + "peak_bytes": 466150, "retained_bytes": 132, "retained_objects": 0 }, { "test_name": "loop_index", - "wall_time_us": 410418, - "session_objects": 0, - "session_bytes": 3800, - "epoch_objects": 1, + "wall_time_us": 424707, + "session_objects": 1, + "session_bytes": 3960, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 6367739, - "compile_time_us": 370, - "exec_time_us": 410048, + "compile_time_us": 471, + "exec_time_us": 424236, "ic_hit_rate": 0.9999934015176508, "ic_hits": 303098, "ic_misses": 2, - "peak_bytes": 3800, - "retained_bytes": 960, + "peak_bytes": 3960, + "retained_bytes": 1184, "retained_objects": 1 }, { "test_name": "loop_while", - "wall_time_us": 1213662, + "wall_time_us": 1267142, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -851,8 +851,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 16000023, - "compile_time_us": 224, - "exec_time_us": 1213438, + "compile_time_us": 314, + "exec_time_us": 1266828, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -862,49 +862,49 @@ }, { "test_name": "loop_while_index", - "wall_time_us": 424745, - "session_objects": 0, - "session_bytes": 3800, - "epoch_objects": 1, + "wall_time_us": 425690, + "session_objects": 1, + "session_bytes": 3960, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 6667739, - "compile_time_us": 595, - "exec_time_us": 424150, + "compile_time_us": 693, + "exec_time_us": 424997, "ic_hit_rate": 0.9999934015176508, "ic_hits": 303098, "ic_misses": 2, - "peak_bytes": 3800, - "retained_bytes": 960, + "peak_bytes": 3960, + "retained_bytes": 1184, "retained_objects": 1 }, { "test_name": "map_ops", - "wall_time_us": 768636, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 100000, + "wall_time_us": 783054, + "session_objects": 100000, + "session_bytes": 17200000, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 12650027, - "compile_time_us": 496, - "exec_time_us": 768140, + "compile_time_us": 476, + "exec_time_us": 782577, "ic_hit_rate": 0.9999963636363637, "ic_hits": 549998, "ic_misses": 2, - "peak_bytes": 672, - "retained_bytes": 672, + "peak_bytes": 17200000, + "retained_bytes": 816, "retained_objects": 1 }, { "test_name": "math_ops", - "wall_time_us": 458976, + "wall_time_us": 466854, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -914,8 +914,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 6500023, - "compile_time_us": 399, - "exec_time_us": 458576, + "compile_time_us": 456, + "exec_time_us": 466398, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -925,154 +925,154 @@ }, { "test_name": "mem_array_grow", - "wall_time_us": 384490, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 1, + "wall_time_us": 386967, + "session_objects": 1, + "session_bytes": 160, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 3800024, - "compile_time_us": 276, - "exec_time_us": 384214, + "compile_time_us": 287, + "exec_time_us": 386680, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 2, - "peak_bytes": 8160, - "retained_bytes": 8160, + "peak_bytes": 2097312, + "retained_bytes": 2097312, "retained_objects": 1 }, { "test_name": "mem_closure_chain", - "wall_time_us": 124144, - "session_objects": 40000, - "session_bytes": 6718890, - "epoch_objects": 40000, + "wall_time_us": 140766, + "session_objects": 80000, + "session_bytes": 12558890, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 590034, - "compile_time_us": 569, - "exec_time_us": 123574, + "compile_time_us": 650, + "exec_time_us": 140116, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, - "peak_bytes": 10479658, - "retained_bytes": 10479658, - "retained_objects": 40003 + "peak_bytes": 12558890, + "retained_bytes": 10079778, + "retained_objects": 30003 }, { "test_name": "mem_cross_call_retain", - "wall_time_us": 256700, - "session_objects": 2, - "session_bytes": 3810453, - "epoch_objects": 60002, + "wall_time_us": 260998, + "session_objects": 60004, + "session_bytes": 11970749, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 1590032, - "compile_time_us": 385, - "exec_time_us": 256314, + "compile_time_us": 521, + "exec_time_us": 260477, "ic_hit_rate": 0.24999583340277662, "ic_hits": 30000, "ic_misses": 90002, - "peak_bytes": 8431077, - "retained_bytes": 8431077, + "peak_bytes": 11970749, + "retained_bytes": 8693357, "retained_objects": 30004 }, { "test_name": "mem_map_retain", - "wall_time_us": 59048, - "session_objects": 0, - "session_bytes": 1977780, - "epoch_objects": 20002, + "wall_time_us": 64636, + "session_objects": 20002, + "session_bytes": 4698124, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 600021, - "compile_time_us": 260, - "exec_time_us": 58788, + "compile_time_us": 292, + "exec_time_us": 64343, "ic_hit_rate": 0.99990000499975, "ic_hits": 19999, "ic_misses": 2, - "peak_bytes": 6436740, - "retained_bytes": 6436740, + "peak_bytes": 7063172, + "retained_bytes": 7063172, "retained_objects": 20001 }, { "test_name": "mem_object_graph", - "wall_time_us": 120980, - "session_objects": 2, - "session_bytes": 312, - "epoch_objects": 65534, + "wall_time_us": 123405, + "session_objects": 65536, + "session_bytes": 8912936, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 884727, - "compile_time_us": 356, - "exec_time_us": 120624, + "compile_time_us": 363, + "exec_time_us": 123041, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 5, - "peak_bytes": 6029720, - "retained_bytes": 6029720, + "peak_bytes": 8912936, + "retained_bytes": 6291984, "retained_objects": 32769 }, { "test_name": "mem_set_retain", - "wall_time_us": 43198, - "session_objects": 0, - "session_bytes": 1088890, - "epoch_objects": 20002, + "wall_time_us": 46824, + "session_objects": 20002, + "session_bytes": 3809234, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 460021, - "compile_time_us": 223, - "exec_time_us": 42975, + "compile_time_us": 235, + "exec_time_us": 46588, "ic_hit_rate": 0.99990000499975, "ic_hits": 19999, "ic_misses": 2, - "peak_bytes": 4769098, - "retained_bytes": 4769098, + "peak_bytes": 5158474, + "retained_bytes": 5158474, "retained_objects": 20001 }, { "test_name": "mem_string_accum", - "wall_time_us": 109556, - "session_objects": 0, - "session_bytes": 2744473, - "epoch_objects": 1, + "wall_time_us": 109544, + "session_objects": 1, + "session_bytes": 2744633, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 960020, - "compile_time_us": 222, - "exec_time_us": 109333, + "compile_time_us": 232, + "exec_time_us": 109311, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 1, - "peak_bytes": 3064633, - "retained_bytes": 3064633, + "peak_bytes": 3268921, + "retained_bytes": 3268921, "retained_objects": 1 }, { "test_name": "mem_string_rope", - "wall_time_us": 2290, + "wall_time_us": 2374, "session_objects": 0, "session_bytes": 124184000, "epoch_objects": 0, @@ -1082,8 +1082,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 145, "instruction_count": 16025, - "compile_time_us": 188, - "exec_time_us": 2101, + "compile_time_us": 236, + "exec_time_us": 2137, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -1093,60 +1093,60 @@ }, { "test_name": "member_compound", - "wall_time_us": 303237, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 6, + "wall_time_us": 309909, + "session_objects": 6, + "session_bytes": 872, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 4400076, - "compile_time_us": 340, - "exec_time_us": 302896, + "compile_time_us": 412, + "exec_time_us": 309496, "ic_hit_rate": 0.9999833333888886, "ic_hits": 299996, "ic_misses": 5, - "peak_bytes": 1064, - "retained_bytes": 1064, + "peak_bytes": 1152, + "retained_bytes": 1152, "retained_objects": 6 }, { "test_name": "object_keys", - "wall_time_us": 492554, - "session_objects": 0, - "session_bytes": 13800000, - "epoch_objects": 20000, + "wall_time_us": 484575, + "session_objects": 20000, + "session_bytes": 18360000, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 3740027, - "compile_time_us": 441, - "exec_time_us": 492113, + "compile_time_us": 456, + "exec_time_us": 484118, "ic_hit_rate": 0.9999, "ic_hits": 9999, "ic_misses": 1, - "peak_bytes": 13800000, - "retained_bytes": 320, + "peak_bytes": 18360000, + "retained_bytes": 416, "retained_objects": 1 }, { "test_name": "prop_access", - "wall_time_us": 170652, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 1, + "wall_time_us": 171261, + "session_objects": 1, + "session_bytes": 136, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 2800036, - "compile_time_us": 278, - "exec_time_us": 170374, + "compile_time_us": 380, + "exec_time_us": 170881, "ic_hit_rate": 0.9999900000000002, "ic_hits": 399996, "ic_misses": 4, @@ -1156,154 +1156,154 @@ }, { "test_name": "prop_bracket", - "wall_time_us": 161156, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 1, + "wall_time_us": 160983, + "session_objects": 1, + "session_bytes": 136, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 2100036, - "compile_time_us": 295, - "exec_time_us": 160861, + "compile_time_us": 423, + "exec_time_us": 160559, "ic_hit_rate": 0.9999900000000002, "ic_hits": 99999, "ic_misses": 1, - "peak_bytes": 184, - "retained_bytes": 184, + "peak_bytes": 192, + "retained_bytes": 192, "retained_objects": 1 }, { "test_name": "prop_delete", - "wall_time_us": 55556, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 1, + "wall_time_us": 55558, + "session_objects": 1, + "session_bytes": 136, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 480034, - "compile_time_us": 297, - "exec_time_us": 55259, + "compile_time_us": 427, + "exec_time_us": 55130, "ic_hit_rate": 0.49997499999999995, "ic_hits": 19999, "ic_misses": 20001, - "peak_bytes": 184, - "retained_bytes": 184, + "peak_bytes": 192, + "retained_bytes": 192, "retained_objects": 1 }, { "test_name": "prop_dynamic", - "wall_time_us": 77613, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 1, + "wall_time_us": 77891, + "session_objects": 1, + "session_bytes": 136, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 1100028, - "compile_time_us": 272, - "exec_time_us": 77341, + "compile_time_us": 301, + "exec_time_us": 77589, "ic_hit_rate": 0.9999800000000001, "ic_hits": 99998, "ic_misses": 2, - "peak_bytes": 168, - "retained_bytes": 168, + "peak_bytes": 192, + "retained_bytes": 192, "retained_objects": 1 }, { "test_name": "prop_nested", - "wall_time_us": 136228, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 150000, + "wall_time_us": 132864, + "session_objects": 150000, + "session_bytes": 20400000, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 1550025, - "compile_time_us": 282, - "exec_time_us": 135945, + "compile_time_us": 347, + "exec_time_us": 132517, "ic_hit_rate": 0.9999800000000001, "ic_hits": 149997, "ic_misses": 3, - "peak_bytes": 504, - "retained_bytes": 504, + "peak_bytes": 20400000, + "retained_bytes": 576, "retained_objects": 3 }, { "test_name": "prop_set", - "wall_time_us": 204890, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 1, + "wall_time_us": 206527, + "session_objects": 1, + "session_bytes": 136, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 3200032, - "compile_time_us": 235, - "exec_time_us": 204654, + "compile_time_us": 272, + "exec_time_us": 206255, "ic_hit_rate": 0.9999900000000002, "ic_hits": 399996, "ic_misses": 4, - "peak_bytes": 176, - "retained_bytes": 176, + "peak_bytes": 192, + "retained_bytes": 192, "retained_objects": 1 }, { "test_name": "property", - "wall_time_us": 150986, - "session_objects": 0, - "session_bytes": 231780, - "epoch_objects": 1, + "wall_time_us": 154873, + "session_objects": 1, + "session_bytes": 231916, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 111035, - "compile_time_us": 305, - "exec_time_us": 150680, + "compile_time_us": 414, + "exec_time_us": 154459, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, - "peak_bytes": 231780, - "retained_bytes": 24160, + "peak_bytes": 231916, + "retained_bytes": 32928, "retained_objects": 1 }, { "test_name": "set_ops", - "wall_time_us": 668577, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 100000, + "wall_time_us": 683318, + "session_objects": 100000, + "session_bytes": 17200000, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 9950027, - "compile_time_us": 288, - "exec_time_us": 668288, + "compile_time_us": 399, + "exec_time_us": 682919, "ic_hit_rate": 0.909089090909091, "ic_hits": 499999, "ic_misses": 50001, - "peak_bytes": 288, - "retained_bytes": 288, + "peak_bytes": 17200000, + "retained_bytes": 320, "retained_objects": 1 }, { "test_name": "string_build", - "wall_time_us": 1735107, + "wall_time_us": 1809323, "session_objects": 0, "session_bytes": 6791197, "epoch_objects": 0, @@ -1311,10 +1311,10 @@ "gc_trigger_count": 4, "gc_bytes_freed": 0, "gc_objects_scanned": 0, - "gc_collection_us": 1168, + "gc_collection_us": 1472, "instruction_count": 16560027, - "compile_time_us": 391, - "exec_time_us": 1734715, + "compile_time_us": 451, + "exec_time_us": 1808872, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -1324,7 +1324,7 @@ }, { "test_name": "string_case", - "wall_time_us": 185220, + "wall_time_us": 186688, "session_objects": 0, "session_bytes": 7600000, "epoch_objects": 0, @@ -1334,8 +1334,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 1600028, - "compile_time_us": 249, - "exec_time_us": 184970, + "compile_time_us": 359, + "exec_time_us": 186329, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -1345,7 +1345,7 @@ }, { "test_name": "string_char", - "wall_time_us": 299017, + "wall_time_us": 311219, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -1355,8 +1355,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 3800025, - "compile_time_us": 247, - "exec_time_us": 298770, + "compile_time_us": 266, + "exec_time_us": 310953, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -1366,7 +1366,7 @@ }, { "test_name": "string_concat", - "wall_time_us": 172775, + "wall_time_us": 176823, "session_objects": 0, "session_bytes": 1900000, "epoch_objects": 0, @@ -1376,8 +1376,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 1800031, - "compile_time_us": 352, - "exec_time_us": 172422, + "compile_time_us": 378, + "exec_time_us": 176445, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -1387,7 +1387,7 @@ }, { "test_name": "string_indexof", - "wall_time_us": 87360, + "wall_time_us": 85993, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -1397,8 +1397,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 1100028, - "compile_time_us": 215, - "exec_time_us": 87144, + "compile_time_us": 241, + "exec_time_us": 85752, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -1408,7 +1408,7 @@ }, { "test_name": "string_replace", - "wall_time_us": 53141, + "wall_time_us": 55864, "session_objects": 0, "session_bytes": 1320000, "epoch_objects": 0, @@ -1418,8 +1418,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 600030, - "compile_time_us": 288, - "exec_time_us": 52852, + "compile_time_us": 353, + "exec_time_us": 55510, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -1429,49 +1429,49 @@ }, { "test_name": "string_replace_fn", - "wall_time_us": 789775, - "session_objects": 294, - "session_bytes": 1619217, - "epoch_objects": 14645, + "wall_time_us": 775998, + "session_objects": 210, + "session_bytes": 17604583, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 3, - "gc_bytes_freed": 52786670, - "gc_objects_scanned": 95590, - "gc_collection_us": 61179, + "gc_bytes_freed": 34437528, + "gc_objects_scanned": 102901, + "gc_collection_us": 72378, "instruction_count": 64987, - "compile_time_us": 408, - "exec_time_us": 789367, + "compile_time_us": 451, + "exec_time_us": 775546, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, - "peak_bytes": 33571047, - "retained_bytes": 12433, + "peak_bytes": 33586009, + "retained_bytes": 12641, "retained_objects": 4 }, { "test_name": "string_split", - "wall_time_us": 99126, - "session_objects": 0, - "session_bytes": 17160000, - "epoch_objects": 20000, + "wall_time_us": 104249, + "session_objects": 20000, + "session_bytes": 24520000, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 540030, - "compile_time_us": 249, - "exec_time_us": 98877, + "compile_time_us": 340, + "exec_time_us": 103908, "ic_hit_rate": 0.9999499999999999, "ic_hits": 19999, "ic_misses": 1, - "peak_bytes": 17160000, + "peak_bytes": 24520000, "retained_bytes": 1226, "retained_objects": 1 }, { "test_name": "string_substring", - "wall_time_us": 122300, + "wall_time_us": 126262, "session_objects": 0, "session_bytes": 2150000, "epoch_objects": 0, @@ -1481,8 +1481,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 1500030, - "compile_time_us": 259, - "exec_time_us": 122040, + "compile_time_us": 342, + "exec_time_us": 125919, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -1492,7 +1492,7 @@ }, { "test_name": "string_trim", - "wall_time_us": 41728, + "wall_time_us": 43860, "session_objects": 0, "session_bytes": 1560000, "epoch_objects": 0, @@ -1502,8 +1502,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 460028, - "compile_time_us": 207, - "exec_time_us": 41521, + "compile_time_us": 253, + "exec_time_us": 43607, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -1513,7 +1513,7 @@ }, { "test_name": "try_catch_ok", - "wall_time_us": 57605, + "wall_time_us": 58217, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -1523,8 +1523,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 1050023, - "compile_time_us": 226, - "exec_time_us": 57379, + "compile_time_us": 255, + "exec_time_us": 57961, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, @@ -1534,49 +1534,49 @@ }, { "test_name": "try_catch_throw", - "wall_time_us": 51635, - "session_objects": 0, - "session_bytes": 720000, - "epoch_objects": 20000, + "wall_time_us": 53502, + "session_objects": 20000, + "session_bytes": 3440000, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 580023, - "compile_time_us": 289, - "exec_time_us": 51346, + "compile_time_us": 319, + "exec_time_us": 53183, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, - "peak_bytes": 720000, + "peak_bytes": 3440000, "retained_bytes": 0, "retained_objects": 0 }, { "test_name": "typeof_ops", - "wall_time_us": 284886, - "session_objects": 0, - "session_bytes": 0, - "epoch_objects": 100000, + "wall_time_us": 311131, + "session_objects": 100000, + "session_bytes": 13600000, + "epoch_objects": 0, "epoch_bytes": 0, "gc_trigger_count": 0, "gc_bytes_freed": 0, "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 4300023, - "compile_time_us": 226, - "exec_time_us": 284660, + "compile_time_us": 250, + "exec_time_us": 310880, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, - "peak_bytes": 0, + "peak_bytes": 13600000, "retained_bytes": 0, "retained_objects": 0 }, { "test_name": "unary_ops", - "wall_time_us": 271734, + "wall_time_us": 284567, "session_objects": 0, "session_bytes": 0, "epoch_objects": 0, @@ -1586,8 +1586,8 @@ "gc_objects_scanned": 0, "gc_collection_us": 0, "instruction_count": 3700023, - "compile_time_us": 318, - "exec_time_us": 271415, + "compile_time_us": 314, + "exec_time_us": 284253, "ic_hit_rate": 0.0, "ic_hits": 0, "ic_misses": 0, diff --git a/crates/oxide_cli/src/bench/baseline.rs b/crates/oxide_cli/src/bench/baseline.rs index 684a748b..f2fdc570 100644 --- a/crates/oxide_cli/src/bench/baseline.rs +++ b/crates/oxide_cli/src/bench/baseline.rs @@ -12,7 +12,10 @@ impl Baseline { } } -/// 一次性能回退:当前指标相对基线的比值超过容差即视为回归。 +/// 一次性能回退信号:当前指标相对基线的比值超过容差即报出。 +/// +/// `informational` 标记信息性信号(墙时型列):随表格打印供人工参考, +/// 不影响退出码;非信息性信号是回归门,出现即退出码 1。 pub struct Regression { pub metric: String, pub test_name: String, @@ -20,6 +23,7 @@ pub struct Regression { pub current: f64, pub ratio: f64, pub tolerance: f64, + pub informational: bool, } /// 从 `benchmark_baseline.json` 加载基线;文件不存在时返回空基线。 @@ -47,8 +51,13 @@ pub fn save_baseline(results: &[MetricCollection]) -> Result<(), String> { Ok(()) } -/// 对比当前结果与基线,返回所有超过各自容差(wall_time 10%、GC 类 50%、其它 20%)的回归项。 -/// 方向语义:`ic_hit_rate` 越高越好(下降超容差才报回归),其余指标越低越好(上升超容差报回归)。 +/// 对比当前结果与基线,返回所有超过各自容差的信号项。 +/// +/// 列语义分三档:确定性列(指令数、内存账目、垃圾回收计数、内联缓存计数) +/// 跨运行逐字节一致,零容差,双向任何变化即信号;墙时型列(wall、exec、 +/// compile、gc_collection)容差 0.50,信息性,只打印不进退出码; +/// `ic_hit_rate` 越高越好(下降超容差才报),其余列越低越好(上升超容差报)。 +/// 两侧零值跳过(基线为 0、当前非零的新分配场景由重锚吸收,不在此报)。 pub fn compare_baseline(current: &[MetricCollection]) -> Vec { let baseline = match load_baseline() { Ok(b) => b, @@ -77,14 +86,20 @@ pub fn compare_baseline(current: &[MetricCollection]) -> Vec { if base_val == 0.0 { continue; } - let tolerance = match name { - "wall_time_us" => 0.10, - "gc_trigger_count" | "gc_bytes_freed" | "gc_objects_scanned" | "gc_collection_us" => 0.50, - "session_bytes" | "peak_bytes" | "retained_bytes" | "retained_objects" => 0.20, - _ => 0.20, + // 确定性列零容差(双向任何变化即信号);墙时型列信息性; + // ic_hit_rate 越高越好;其余列保留 20% 默认带。 + let (tolerance, informational) = match name { + "instruction_count" | "session_objects" | "session_bytes" | "gc_trigger_count" + | "gc_bytes_freed" | "gc_objects_scanned" | "ic_hits" | "ic_misses" | "peak_bytes" + | "retained_bytes" | "retained_objects" => (0.0, false), + "wall_time_us" | "exec_time_us" | "compile_time_us" | "gc_collection_us" => (0.50, true), + "ic_hit_rate" => (0.05, false), + _ => (0.20, false), }; let ratio = cur_val / base_val; - let regressed = if matches!(name, "ic_hit_rate") { + let regressed = if tolerance == 0.0 { + (ratio - 1.0).abs() > 1e-9 + } else if matches!(name, "ic_hit_rate") { ratio < 1.0 - tolerance } else { ratio > 1.0 + tolerance @@ -97,6 +112,7 @@ pub fn compare_baseline(current: &[MetricCollection]) -> Vec { current: cur_val, ratio, tolerance, + informational, }); } } diff --git a/crates/oxide_cli/src/bench/js_stress.rs b/crates/oxide_cli/src/bench/js_stress.rs index 5834e09e..1da2cbc9 100644 --- a/crates/oxide_cli/src/bench/js_stress.rs +++ b/crates/oxide_cli/src/bench/js_stress.rs @@ -155,9 +155,27 @@ pub fn run_js_stress_bench(config: &BenchConfig, kernel: &Arc, pool: eprintln!("Baseline saved to BENCHMARK_BASELINE.md + benchmark_baseline.json"); } else { let regressions = compare_baseline(&results); - if !regressions.is_empty() { + // 信息性旗标(墙时型列)只打印供人工参考,不影响退出码。 + let informational: Vec<_> = regressions.iter().filter(|r| r.informational).collect(); + if !informational.is_empty() { + eprintln!("\nWall-time drift (informational, does not affect exit code):"); + for r in &informational { + eprintln!( + " {}: {} baseline={} current={} ratio={:.2}% tolerance={:.0}%", + r.test_name, + r.metric, + r.baseline, + r.current, + (r.ratio - 1.0) * 100.0, + r.tolerance * 100.0, + ); + } + } + // 回归门:确定性列等硬信号出现即退出码 1。 + let hard: Vec<_> = regressions.iter().filter(|r| !r.informational).collect(); + if !hard.is_empty() { eprintln!("\nRegression detected:"); - for r in ®ressions { + for r in &hard { eprintln!( " {}: {} baseline={} current={} ratio={:.2}% tolerance={:.0}%", r.test_name, diff --git a/crates/oxide_cli/src/bench/output.rs b/crates/oxide_cli/src/bench/output.rs index 678dabc8..bae8faf8 100644 --- a/crates/oxide_cli/src/bench/output.rs +++ b/crates/oxide_cli/src/bench/output.rs @@ -23,6 +23,17 @@ const MEMORY_BENCH_NOTES: &str = "\n内存基准用例(mem_*):\n 再克隆一份(object_graph 见留存锚测试)。 "; +/// A/B 判据口径说明,随表格尾部输出。 +const BENCH_JUDGMENT_NOTES: &str = "\nA/B 判据口径:\n + 主判(回归门):确定性列——指令数、内存账目(session/peak/retained)、 + 垃圾回收计数、内联缓存计数——跨运行逐字节一致,零容差,双向任何变化即信号; + 基线对比的退出码 1 只认这些列。 + 次判(墙时间):wall/exec/compile/gc_collection 列在 ±5% 带内(固定核、 + warmup 2、三轮中位);基线对比容差 0.50,信息性,不影响退出码。 + 基线文件是陈旧锚(安静树单次快照),不是 A/B 仪器;A/B 是同机同宿主 + 严格交错对比。 +"; + /// 把结果格式化为对齐的文本表格(供终端打印)。 /// /// `Sess B`/`Peak B`/`Ret B` 为 session 堆账目(字节):执行期累计 / 峰值高水位 / @@ -64,6 +75,7 @@ pub fn format_text_table(results: &[MetricCollection]) -> String { out.push('\n'); } out.push_str(MEMORY_BENCH_NOTES); + out.push_str(BENCH_JUDGMENT_NOTES); out }