javascript内置拆分函数的大O

Big O of javascript built-in split function

本文关键字:函数 内置 拆分 javascript      更新时间:2023-09-26

示例:

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项目,也许你会找到你想要的东西。

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