프로그램을 최대로 효율적인 상태로 만드는것
즉 단순하게 생각하면 프로그램이 돌아가는데 있어서 문제점이 없는 상태를 말하는건데
거기에서 알고리즘이빠지면 그 프로그램이 효율적인상태가 가능하냐?
내가 아까 말한대로 탐색 조건에서 선형탐색이랑 이진탐색 둘중에 아무거나 써도 프로그램이 탐색하는결과는 같다
하지만 그 결과보다 하는 과정에서 리소스(메모리, CPU)등을 얼마나 사용하는게 중요한거 아님?
물론 한 몇천개 몇만개 중에 하나 찾는거면 눈에 가시적으로 안보일수도 있겠지만 이 데이터양이 수억 수십억개로 넘어가면
디바이스도 한계가 100%보일건데.
리소스를 졸라 사용해서 찾는거랑 최소로 사용해서 찾는거 결과로 보면 시간복잡도 공간복잡도까지 따져야되는데
내말은 시공간복잡도를 최소화하는게 최적화 중에 하나 라는거임.
어찌됐든 시공간 복잡도를 최소화하면 결과적으로 프로그램이 돌아가는데있어서 효율적인 상태로 되는건 당연하니까.
물론 최적화에 있어서 메모리관리, CPU관리 등등도 포함되지만 알고리즘도 그 최적화 과정의 하나
메모리랑 CPU관계에서도 보자면 화면에 빨간색 네모하나를 그린다고 치자 그냥 이미지파일 넣어서 불러오면 메모리를 사용함
근데 그냥 코어그래픽으로 그리면 CPU를 차지함 이런것도 적절히 잘 분배하는것도 최적화라고 한다고봄
내가 너무 복잡하게 말했나? 한국떠난지 꽤돼서 한국어 많이 잊어먹었다 미안. ㅇㅇ
영어좀 더 배우고 와라. 데이터 양 이면 그냥 영어로 하는게 낫겠다.
ㄴ 응 배우고 있어 걱정 ㄴㄴ
알고리즘 보다는 리팩토링이나 디자인패턴 잘된 설계 ㅡ 시큐어 코딩 포함 ㅡ 에 가까운 이야기들이다
ㄴ 그럼 일부 프로그램에서 탐색할때 선형탐색으로 탐색한 결과와 이진탐색으로 탐색한 결과가 도출될때 두알고리즘차이로 인한 시간복잡도로 인해 느리게 탐색되어도 최적화가 잘 되었다고 표현함?
그건 퍼포먼스에 대한 이야기
최적화 앞에 성능이라는 말이 붙어야 되겠지
최적화라고 단순하게 말하면 범위가 넓음
ㄴ 응 따지고 보니 그러네
정작 현실은 많은 경우에 이진탐색 보다 순차탐색이 빠르지. 심지어 병렬화되면, O(2) 임.