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项目,也许你会找到你想要的东西。
我不知道如何获得分割的摊销时间,我认为在没有访问源代码的情况下,你无法计算它。
相关文章:
- jQuery中是否内置了任何字符串格式化函数
- 带有内置图像对象的Canvas组件构造函数;t显示's图像
- 为什么没有用于cookie的内置JS函数
- 角度和内置的javascript映射函数
- 无需Javascript内置函数即可将十进制转换为十六进制
- 在没有内置 Javascript 函数的情况下将基数 10 转换为其他基数 2 的数字
- 从函数向内置函数中添加多个参数
- jQuery.remove()不起作用,而其他内置函数则起作用
- JavaScript ES6:测试箭头函数、内置函数、常规函数
- 如何查找函数是内置函数还是用户定义的函数
- WordPress内置函数无法在ajax php文件上识别
- 在 JavaScript 中将数组作为内置函数参数传递
- mapquest 中的内置函数,用于从地址获取纬度
- 内置JavaScript / Greasemonkey函数来获取服务器时间
- JavaScript:将内置对象的方法作为回调函数传递
- 警报和确认函数是内置在 JavaScript 中,还是 DOM 的一部分
- 是否有一个内置函数可以将创建日期添加到couchDB中的文档中
- Javascript中的内置构造函数函数
- 未捕获的错误:不变冲突:元素类型无效:需要字符串(对于内置组件)或类/函数,但得到:对象
- Object()构造函数内置的特殊行为