Afs*_*ani 5 javascript algorithm optimization performance
我有这个代码:
var boo = 123123;
Run Code Online (Sandbox Code Playgroud)
我想将该数字转换为字符串,并且conact string比本机 JavaScript .toString()更快:
快点:
var foo = boo + "";
Run Code Online (Sandbox Code Playgroud)
慢点:
var foo = boo.toString();
Run Code Online (Sandbox Code Playgroud)
jsPerf: http: //jsperf.com/concat-string-vs-tostring
为什么.toString()比连接空字符慢?最后我想知道使用+ ""技术而不是正确的方法是什么.toString()?
结果会因使用的 JavaScript 引擎而异。在 chrome one 上,我得到了与 Afshin 相同的结果。
那么为什么实际上一个比另一个慢呢?这是因为toStringV8内部将会多一个对C函数的调用。接下来你可以自己尝试看看:
script1脚本,然后按 Enter 键。重复同样的操作script2
脚本1:var boo = 123123; var foo = boo + "";
脚本2:var boo = 123123; var foo = boo.toString();
就我而言,首先将导致下一个堆栈跟踪:
InjectedScript.evaluate
InjectedScript._evaluateAndWrap
Run Code Online (Sandbox Code Playgroud)
而第二个:
InjectedScript.evaluate
InjectedScript._evaluateAndWrap
InjectedScript._evaluateOn
evaluate
Run Code Online (Sandbox Code Playgroud)
我认为这更多地与引擎内部有关,而不是官方 js 规范,并且可能可以优化以使用相同的代码路径。