我好奇,JavaScript的功能更快,我找不到解决这个问题的方法。让我们采用一个简单的字符串,并用下划线替换所有空格。
let string = 'Hello World';
let newString = string.split(' ').join('_');
//newString: Hello_World
另一种解决方法是替换功能:
let string = 'Hello World';
let newString = string.replace(/ /g,"_");
//newString: Hello_World
两种方式(在我看来)都可以阅读。我想知道这个时刻的方式是否更快(可能是2018年)。我找到了一些答案,但这些已经过时了,我想知道他们是否已经提高了新浏览器的性能。
答案 0 :(得分:3)
根据我的个人经验:它完全无关紧要,除非您正在编写绝对的高性能JavaScript(如10k操作/帧)。由于编译器优化,编写有意义的perftest也非常困难,这非常复杂并且很难理解实际测量的内容。
在另一篇文章中,有一个提示,一个循环将是最快的,但我怀疑它在实践中真的很重要。
Which is more efficient .replace() or .split().map().join()
通过@Seblor观察jsperf测试的结果,你会看到,每秒可能有数十万次调用。因此,性能并不是真正的问题。
Split-Join:1,381,976 ±6.79% 慢25%
替换 1856450 ±7.22% 最快
所以:选择你喜欢的东西。
答案 1 :(得分:3)
我运行了一个JSPerf来测试哪个更快,而且我认为AUTH="<user_id>:<user_api_token>"
JOB_NAME="<job_name>"
TRIGGER_URL="http://<jenkins>:8080/job/$JOB_NAME/buildWithParameters?param1=value1¶m2=value2"
curl -D - -X POST -u $AUTH $TRIGGER_URL 2>&1`
函数的速度提高了大约40-50%(我在Chrome 66上测试过):
https://jsperf.com/replace-vs-split-join-seblor
另外,你获得了内存增益,因为replace
创建了一个数组。