mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-23 18:21:13 +08:00
perf: replace 函数 replacer 回调免每匹配整串复制
回调第 4 参(原字符串)由每匹配复制整串改为调用方预构一次: 原始字符串 receiver 直接复用原值零拷贝,对象 receiver 提升为单次会话串。 覆盖 String.prototype.replace/replaceAll 与 RegExp.prototype[Symbol.replace] 的函数 replacer 路径。补回调第 4 参断言测试与 fn-replacer 压测。
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
// 函数 replacer 场景:global 正则多匹配 + 长源串,回调第 4 参为原字符串。
|
||||
// 每匹配整串复制的消除在此路径可测(m×n 字节拷贝 → 0)。
|
||||
var ITERATIONS = 2000;
|
||||
|
||||
var s = "";
|
||||
for (var i = 0; i < 50; i++) {
|
||||
s += "ab" + i + "c";
|
||||
}
|
||||
var sum = 0;
|
||||
for (var i = 0; i < ITERATIONS; i++) {
|
||||
var r = s.replace(/b/g, function (m) {
|
||||
return "X";
|
||||
});
|
||||
sum += r.length;
|
||||
}
|
||||
sum
|
||||
Reference in New Issue
Block a user