繁体   English   中英

javascript内置拆分功能的大O

[英]Big O of javascript built-in split function

例子:

var string = "abcde";
var array = string.split("");
// array = ["a", "b", "c", "d", "e"]

这个拆分函数的摊销运行时间是多少? 另外,如何在javascript中查看此类内置函数的源代码?

使用空分隔符参数时, split本质上等同于:

var len = string.length;
var result = Array(len)
for (i = 0; i < len; i++) {
    result[i] = string[i];
}

这是O(len)

使用分隔符,它变成O(string.length * delimiter.length) ,因为在循环的每一步,它都必须测试delimiter是否匹配。

这不是很简单。 复杂性将取决于分隔符(它是字符串还是正则表达式)。 对于每次迭代,都会在字符串中搜索分隔符上的匹配项。 大 O 本质上是 O(len * big O of search algorithm),其中 len 是子串的数量。

编辑:OP 确实问过“此拆分函数的摊销运行时间是多少? ”。 这是对这个精确问题的回答

要获取函数的实际运行时间,请参阅: 如何测量函数执行所花费的时间

var start = new Date().getTime();

for (i = 0; i < 50000; ++i) {
// do something
}

var end = new Date().getTime();
var time = end - start;
alert('Execution time: ' + time);

您无法查看 JS 源代码,因为它内置于每个导航器中。 你可以看看Chromium 项目,也许你会找到你想要的。

我不知道如何获得拆分的摊销时间,我认为您无法在无法访问源代码的情况下计算它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM