Javascript toUpperCase方法的效率是多少?
这似乎是一个超级基本的问题,但我想知道javascript的内置.toUpperCase()方法——时间效率是O(n)还是O(1)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字符串是不可变的)这一事实足以验证操作需要线性时间
我一直以为时间是恒定的,但现在我想起来了。。。“引擎盖下”这个方法不需要逐个检查每个字符是否为小写吗?(因此,将其设为O(n)本规范中所述的算法为O(n)。复制原始字符串(或原始对象的字符串表示形式)的每个码点,并将其转换为新的码点
toUpperCase
和toLowerCase
返回新字符串(因为JavaScript字符串是不可变的)这一事实足以验证操作需要线性时间,而不是常数。是的,内部字符串必须一次处理一个字符(实际上是一个代码点)。O(n),您必须遍历字符并对其进行操作。还要注意,toUpperCase()是不可变的,因此它返回字符串的一个副本…因此,O(n)即使它没有更改任何内容,它也必须创建字符串的一个副本,即O(n)
@barmar但它必须迭代每个字符,使其成为O(n)?“复制”部分不只是O(1)?我已经做了一些性能测试。toUpperCase
的持续时间似乎随着字符串长度线性增长,尽管它是极其微不足道的。