[TIL]성능공부ing/3일간의회고

Violet Lee·2020년 9월 9일
0

javascript

목록 보기
10/24
  1. 우선 레퍼런스 코드들은 정말 코드의 성능을 좋게만들거나, 아니면 우리에게 어떠한 관점,아이디어를 주기위해 만들어진것으로 보인다. 예) String()과 i.toString, i.value함수, ''에 그냥 문자를 더하는것... 을 다양하게 찾아볼수있음.

씌우거나, 다른 방법을 사용할때 성능차이 비교해볼것.

함수로 만들때 성능차이도 있음.

TIL을 작성하기전에..

먼저 문제들을 풀면서 한 문제에도 여러가지 푸는 방법이 있는걸 알았는데, 어떤 방식으로 푸는것이 더 효율적인것일까를 공부하고 싶었고, 그걸 간단하게 정리해볼거다. js를 더 빠르고, 더 낫게 쓰는 방법에 대한 좋은 글을 하나 찾았다. 그걸 토대로 적어볼 예정이다.

JS코드를 효과적으로 적는 tip 몇가지

1). '불필요한 단계를 제거'하고 더 나은 방법을 탐구.
=> 예를 들어 1부터 num까지의 수 중 홀수를 구하는 코드를 짜본다고 해보자.

ex) 1차적으로 생각한 코드.
let num=18;
let arr = [];
for(let i=0;i<num;i++){ //0부터 num까지 1씩 모두 돌면서
	if(i%2!==0){ //안에 조건을 넣어주고, 해당하는 조건이면
    	arr.push(i); //arr에 넣어준다.
    }
}
console.log(arr); //(9) [1, 3, 5, 7, 9, 11, 13, 15, 17]
ex) 2차적으로 생각한 코드. 어차피 0부터 무조건 돌 필요는 없고, 1부터 증가한다 하면 +2씩 더하면
    홀수인것만 걸러지지 않을까?
let num=18;
let arr = [];
for(let i=1;i<num;i+=2){
    	arr.push(i);
}
console.log(arr); //(9) [1, 3, 5, 7, 9, 11, 13, 15, 17]
                 ↓  ↓


두번째 코드의 실행시간이 더 적게 걸리는 코드인것을 확인했다. 같은 내용일때 두번째코드가 더 효율적이란 거다.

예를 들어 소수를 구하는 식도 마찬가지로 만약에 for문이나 while문을 사용시 모두 돌 필요가 없고, 소수는 어차피 1과 자기자신만을 약수로 지니므로, 반대로 생각하면 그 이외의 숫자인 2~자기자신-1 사이의 수로는 나눠지면 안된단 뜻이니까,
만약 특정 수 사이의 소수를 구한다고 하면, 범위를 줄일 수 있을것이다.

=> 즉 조건을 여러번 시도해보고 노력해보면, 탐색시간이 적어지는 방법을 찾을수있다.


2). '불필요한 단계를 제거'할수도 있다.

'incorrect'.split('').slice(2).join('');  // 문자열을 한글자씩 뗀 후,
//index가 2인 글자부터 slice하여, 다시 join함수로 ''안에 넣어 string화 시켰다.
'incorrect'.slice(2);                     // slice 함수 하나만 사용해 string을 유지한다.
예제 1 참고) '불필요한 단계 제거'
      

사용하는 메소드나 함수를 최대한 효율적으로 사용하여 풀 수 있어야한다.


3일간의 회고?

우선 컨디션을 잘 유지하면서도, 자기자신에게 자만하지않고 한 문제를 여러가지 방법으로 다시 푸는 연습을 하고있다. 동료에게 배울점은 항상 있다. 나와 생각이 다르면 대환영이다. 더 효율적인 코드는 어떤걸까-를 동료와 함께 탐구해보고 연구해보는 시간을 가졌었다. 실험정신이 좋은 동료를 만나는건 정말 서로에게 도움이 되는 일이다. 우선 이대로, 운동시간, 식사시간, 공부시간 조절을 유지하자.

인용 출처

profile
예비개발자

0개의 댓글