Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript toUpperCase方法的效率是多少?_Javascript_Algorithm_Performance_Big O - Fatal编程技术网

Javascript toUpperCase方法的效率是多少?

Javascript toUpperCase方法的效率是多少?,javascript,algorithm,performance,big-o,Javascript,Algorithm,Performance,Big O,这似乎是一个超级基本的问题,但我想知道javascript的内置.toUpperCase()方法——时间效率是O(n)还是O(1) 我一直以为时间是恒定的,但现在我想起来了。。。“引擎盖下”这个方法不需要逐个检查每个字符是否为小写吗?(因此,将其设为O(n)本规范中所述的算法为O(n)。复制原始字符串(或原始对象的字符串表示形式)的每个码点,并将其转换为新的码点 toUpperCase和toLowerCase返回新字符串(因为JavaScript字符串是不可变的)这一事实足以验证操作需要线性时间

这似乎是一个超级基本的问题,但我想知道javascript的内置.toUpperCase()方法——时间效率是O(n)还是O(1)


我一直以为时间是恒定的,但现在我想起来了。。。“引擎盖下”这个方法不需要逐个检查每个字符是否为小写吗?(因此,将其设为O(n)

本规范中所述的算法为O(n)。复制原始字符串(或原始对象的字符串表示形式)的每个码点,并将其转换为新的码点


toUpperCase
toLowerCase
返回新字符串(因为JavaScript字符串是不可变的)这一事实足以验证操作需要线性时间,而不是常数。

是的,内部字符串必须一次处理一个字符(实际上是一个代码点)。O(n),您必须遍历字符并对其进行操作。还要注意,toUpperCase()是不可变的,因此它返回字符串的一个副本…因此,O(n)即使它没有更改任何内容,它也必须创建字符串的一个副本,即
O(n)
@barmar但它必须迭代每个字符,使其成为O(n)?“复制”部分不只是O(1)?我已经做了一些性能测试。
toUpperCase
的持续时间似乎随着字符串长度线性增长,尽管它是极其微不足道的。