有一個字符串 var number = '100'
,我們要將它轉(zhuǎn)換成 Number 類型的 100。
目前有三個選項:+, parseInt, Number
請測試哪個方法更快。
首先去弄個 benchmark 庫,https://github.com/bestiejs/benchmark.js 。
這個庫已經(jīng)兩年沒有更新了,兩年前發(fā)了個 1.0.0 版本,直到現(xiàn)在。
用法也特別簡單,照著官網(wǎng)的 copy 下來就好。
我們先來實現(xiàn)這三個函數(shù):
var int1 = function (str) {
return +str;
};
var int2 = function (str) {
return parseInt(str, 10);
};
var int3 = function (str) {
return Number(str);
};
然后照著官方的模板寫 benchmark suite:
var number = '100';
// 添加測試
suite
.add('+', function() {
int1(number);
})
.add('parseInt', function() {
int2(number);
})
.add('Number', function () {
int3(number);
})
// 每個測試跑完后,輸出信息
.on('cycle', function(event) {
console.log(String(event.target));
})
.on('complete', function() {
console.log('Fastest is ' + this.filter('fastest').pluck('name'));
})
// 這里的 async 不是 mocha 測試那個 async 的意思,這個選項與它的時間計算有關(guān),默認(rèn)勾上就好了。
.run({ 'async': true });
直接運行:
可以看到,parseInt 是最快的。
如果想要在線分享你的 js benchmark,用這個網(wǎng)站:http://jsperf.com/ 。
比如我在上面測試 Math.log
的效率:
http://jsperf.com/math-perf-alsotang
進(jìn)入之后點擊那個 Run tests
按鈕,就可以在瀏覽器中看到它們的效率差異了,畢竟瀏覽器也是可以跑 js 的。
點擊這里:http://jsperf.com/math-perf-alsotang/edit ,就可以看到這個 benchmark 是怎么配置的,很簡單。
更多建議: