Javascript

javascript 몇몇 문법 속도 벤치마크 정리

킹king 2022. 6. 28. 15:04
반응형

js문법 속도 측정 사이트를 알게된 이상 한번 정리하는 겸 테스트해봄. 각 테스트마다 문법이 여러개가 있는것도 있지만 상위 4,5위까지만 가져와봄. 덕분에 잊고있었던 문법공부도 다시 하게댐 후후

 

테스트 브라우저: 크롬

https://jsben.ch/browse

 

JSBEN.CH Performance Benchmarking Playground for JavaScript

 

jsben.ch

 

----------------------------------------------

 

1. array 복사해서 만들기

json stringify는 자주썼는데 이거 좋은 방법이 아니네 어쩐지 어디서 느리다는걸 본적이 있는데.. 앞으로는 slice나 concat을 써야할듯(참고로 concat은 원본 array와 참조된 링크가 끊겨서 안심하고 써도 됨).

var testArray = [29, 27, 28, 838, 22, 2882, 2, 93, 84, 74, 7, 933, 3754, 3874, 22838, 38464, 3837, 82424, 2927, 2625, 63, 27, 28, 838, 22, 2882, 2, 93, 84, 74, 7, 933, 3754, 3874, 22838, 38464, 3837, 82424, 2927, 2625, 63, 27, 28, 838, 22, 2882, 2, 93, 84, 74, 7, 933, 3754, 3874, 22838, 38464, 3837, 82424, 2927, 2625, 63, 27, 28, 838, 22, 2882, 2, 93, 84, 74, 7, 933, 3754, 3874, 22838, 38464, 3837, 82424, 2927, 2625, 63];

// 1위 concat
var obj2 = [].concat(testArray);

// 2위 slice
var obj2 = testArray.slice();

// 3위 index
var obj2 = [];
for (var i = 0, l = testArray.length; i < l; i++) {
  obj2[i] = testArray[i];
}

 

2. object에서 key있나 체크

속도가 다들 준수하셔서 뭘 써도 될듯.

var testObj = {a: 28, b: 82, c: "hello", d: 983, e: 'lara', o: "key", f: '82828', g: 8};

// 1위 undefined
var result;
if (testObj.key !== undefined) {
    result = true;
}

// 2위 in
var result;
if (var key in testObj) {
    result = true;
}

// 3위 hasOwnProperty
var result;
if (testObj.hasOwnProperty("key")) {
    result = true;
}

 

3. string에서 문자열 찾기

indexOf만 인덱스값 알려주고 나머지는 boolean으로 리턴함.

var str = "nasd.n.kasdkskdnfkjsdfkjhsdfiuhsdfiusadfiuhsdfiöhsdifhsäodfjiosdfisdfsdfnosdfiosdf89sdfs98pdfzp98sdf98psfzp8sfzp8sfzp89szfp8snasd.n.kasdkskdnfkjsdfkjhsdfiuhsdfiusadfiuhsdfiöhsdifhsäodfjiosdfisdfsdfnosdfiosdf89sdfs98pdfzp98sdf98psfzp8sfzp8sfzp89szfp8snasd.n.kasdkskdnfkjsdfkjhsdfiuhsdfiusadfiuhsdfiöhsdifhsäodfjiosdfisdfsdfnosdfiosdf89sdfs98pdfzp98sdf98psfzp8sfzp8sfzp89szfp8snasd.hellon.kasdkskdnfkjsdfkjhsdfiuhsdfiusadfiuhsdfiöhsdifhsäodfjiosdfisdfsdfnosdfiosdf89sdfs98pdfzp98sdf98psfzp8sfzp8sfzp89szfp8s";
var needle = "hello";
var needleRegex = /hello/;

// 1위 includes (ES6)
var test = str.includes(needle);

// 2위 indexOf
var test = str.indexOf(needle);

// 3위 lodash includes 라이브러리

// 3위 regex (lodash없으면 3위)
var test = needleRegex.test(str);

// 4위 search
var test = str.search(needleRegex);

// 5위 match
var test = str.match(needleRegex);

 

4. array 비우기

[]는 지만 빈배열로 바꿔서 만약 참조된 원본 배열이 있다면 걔는 안건듬.

length = 0은 참조된 원본 배열까지 호로록 말아드심(주의).

var testArray = [83, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28, 93, 27, 29, 2828, 234, 23, 56, 32, 56, 67, 77, 32, 45, 93, 17, 28, 83, 62, 99, 36, 28];

// 1위 new init
testArray = [];

// 2위 length = 0
testArray.length = 0;

// 3위 splice
testArray.splice(0, testArray.length);