[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개의 댓글

관련 채용 정보