열심히 자바스크립트를 공부하는 개붕이는 배열에 있는 가장 작은수를 찾아내는 함수를 for문을 이용해 만들다 문득 생각하게 된다.
"내장함수가 있다면 내장함수를 쓰는게 더 좋지않을까?"
내장함수만 쓰면 복잡한 코드를짤떄 기능적 로직적으로 원하는 정확한 결과값을 내는게 힘들수도 있으니 직접 코드를 짜는것이 확실한게 아닐까 싶으면서도
for에 for을 얹으면 연산이 너무 느려지진 않을까?? 좌우지간 궁금해 졌다....
일단 1000개의 랜덤 배열을 생성해주는 함수를 뚝딱!
배열중 가장 작은 숫자를 찾아주는 Math.min 을 사용한 함수 뚝딱
for문으로 만든 함수 뚝딱!
둘다 각각 10번을 돌려서 각각 연산에 걸린 시간의 평균값을 구해봤다
결과는
for문은 1번 돌릴때 평균 2.73ms 소요
Math.min 은 0.06ms 소요....
생각했던것 보다 엄청난 차이가 났다..
아주 간단한 코드가 이정도라면 복잡한 코드에서는 더더욱 느려질수 있겠다는 생각을 했다.
1만개 10만개 가 되는 자료를 다뤄야 하는 코드를 짤경우 최적화가 무엇보다 중요하겠다는 생각이 들었따.
17개의 댓글
무분별한 사용은 차단될 수 있습니다.
스비니
2중 for문을 도는 이유가 있나요?
코싸멘뚜
배열 요소 하나씩 가져와서 모든배열에 전부다 맞춰보고 작은숫자를 선언하게끔 만들었거든용....
스비니
이해가 안 되는데.. 최소값을 찾는 건 O(n)에 해결되는 문제잖아요. 바깥 for문의 존재 이유가?
코싸멘뚜
어,,,,,,? 그러네요? 어...?
스비니
ㅎㅎ 착각하셨나 보네요..
내장 함수들은 보통 훌륭하신 프로그래머분들이 많은 상황들을 고려해서 작성하셨을 테니깐 일반적으로 사용이 권고되는 건 맞는 것 같아요.
코싸멘뚜
한바퀴만 돌면 되는걸 1000바퀴를 더돌렸네요 ㄷㄷㄷ
신다린
팡션? 너무 많이 쓰지 마세요
RX7900XTX
이래서 STL 공부하면 좋긴 함ㅇㅇ 덜 귀찮아지고 성능도 보장되다보니 ㅇㅇ
숨은음은
이걸 몰랐다고요?
프로그래머스나 백준 알고리즘 문제만 풀어봐도
내장 함수 안 쓰면 시간복잡도에서 바로 걸리는데;;
코싸멘뚜
코린이라... 잘못라똠
다르다르다르다
js 에서 math.min, max는 어떻게 구현했는지 몰라도 코테에서 가끔 이 함수땜에 시간초과 나기도 함ㅋㅋㅋㅋ 그리고 고차함수랑 구조분해할당도 이것땜에 시간초과 몇번 당하고서 코테에선 안쓰게 되더라…
냥드립퍼
Do not reinvent the wheel
베트남외노자
손수 짠 로직 코드가 내장함수보다 빠르고 정확하면 모르는 곳에서 전화 수백통올듯
silentScreamer
너무 좋다 이런글 big o notation 좀 더 찾아봐 님이 재밌어할거 많을듯
a1s2d3f4g5
대부분 아님
sort만해도 내장소트 느려서 소트라이브러리 따로있음
C언어에 malloc도 더빠른애들 따로있고
국립국어원
sum 도 없어서 reduce 조져야하는 좃스
승여니조아
RTOS 펌웨어 짤떄 printf도 계속 호출하다보면 스택영역 부족해서 TASK 종료되서 따로 만들어쓰긴하는데 모든거에 적용되는건아님..