关于Javascript中的replace()或substr()的性能

Performance about replace() or substr() in Javascript

本文关键字:substr 性能 Javascript replace 关于 中的      更新时间:2023-09-26

我想知道使用string.replacement()或string.substr()的Javascript性能。让我解释一下我在做什么。

我有一个类似的字符串

str = "a.aa.a.aa."

我只需要"弹出"str中的最后一个元素,我总是知道它是什么类型的字符(例如,这里是一个点)。

这很简单,我可以遵循很多方法,比如

str = str.substr(0, str.length-1) // same as using slice()

str = str.replace(/'.$/, '')

你会使用哪些方法?为什么?使用这种或那种方法的性能是否有所欠缺?字符串的长度可以忽略不计。

(这是我的第一篇帖子,所以如果我做错了什么,请通知我!)

对于JavaScript中的性能测试,请使用jsPerf.com

我在这里为您的问题创建了一个测试用例,它表明substr要快得多(至少在firefox中)。

如果你只想要字符串中的最后一个字符,那么使用下标,而不是替换:

str[str.length-1]

你必须在一个循环中这样做数千次吗?如果不是(并且"字符串长度可以忽略不计"),任何方式都可以。

也就是说,我更喜欢第一个选项,因为它使修剪最后一个字符的意图比第二个更清晰(哦,而且它更快,以防您do需要运行无数次。因为在regex的情况下,您不仅需要构建一个新字符串,还需要编译一个RegExp并根据输入运行它。)

当你有这种怀疑时,要么选择你最喜欢的(从风格上讲,因为只运行一次并不重要),要么使用http://jsperf.com.

对于这个例子,请参阅为什么substr更好:-)。

substr方式应该总是比任何类型的RegExp都快。但性能差异应该很小。