js字符串轉為數字方法parseInt()、減號、乘號、JSON.parse()、Number()的效率比較


var a = '1';
var b = '0x1';

var runTest = function(timeTag, testFunction) {
    console.time(timeTag);
    for (var i = 0; i < 100000000; i++) {
        testFunction();
    }
    console.timeEnd(timeTag);
}
runTest("parseInt(a)", function() {
    parseInt(a);
});
runTest("parseInt(a, 10)", function() {
    parseInt(a, 10);
});
runTest("parseInt(b)", function() {
    parseInt(b);
});
runTest("parseInt(b, 10)", function() {
    parseInt(b, 10);
});
runTest("a * 1", function() {
    a * 1;
});

 runTest("b* 1", function() {
  b * 1;
 });

runTest("- 0", function() {
    a - 0;
});
runTest("JSON.parse()", function() {
    JSON.parse(a);
});
runTest("Number(a)", function() {
    Number(a);
});
runTest("Number(b)", function() {
    Number(b);
});
parseInt(a): 537.01025390625ms
parseInt(a, 10): 1513.892822265625ms
parseInt(b): 20277.371826171875ms
parseInt(b, 10): 17531.925048828125ms
a* 1: 1101.119140625ms
b* 1: 1193.64794921875ms
- 0: 1126.380126953125ms JSON.parse(): 15990.590087890625ms Number(a): 1172.126953125ms Number(b): 1288.054931640625ms

綜上比較,

1、本身是數字的字符串轉為數字,parseInt()不帶參數直接轉最快;

2、字符串既包含數字又包含字母的字符串,parseInt()帶10進制的參數更快,但是是所有方法中最慢的;

3、如果是純數字組成的字符串,可以使用JSON.parse()轉為數字,相比是所有方法中最慢的。

4、Number()方法和乘號、減號方法相差不大。

 

參考鏈接:https://cnodejs.org/topic/5556c5237cabb7b45ee6bca6

推薦文章:https://blog.fundebug.com/2018/07/07/string-to-number/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM