소프트웨어 공부/프로그래밍

적절한 규모 유지를 위해서는 '언제, 어떻게' 를 아는 것이 중요하다.

야곰야곰+책벌레 2021. 4. 20. 12:40
728x90
반응형

폭발적인 데이터 증가를 주의하라.

너무 이른 최적화는 피하되, 복잡함의 정도를 분명하게 지켜보아야 한다. 데이터를 제어하는 알고리즘은 예측이 가능하고, 선형보다 나쁘지 않으며, 데이터를 처리하는 시간이 적절한 것을 택하자. 최적화가 필요한 시점이 되면 작은 추가 부분을 줄이는 미세한 최적화보다는 전체적인 그림의 복잡성을 줄이는 데 노력하자.

 

메모리와 디스크 용량은 계속해서 눈에 띄게 증가하고 있다. 예를 들어 1988년부터 2004년까지의 디스크 용량의 증가는 연간 112%에 이르고, 무어의 법칙을 적용한다고 해도 59%나 된다. 따라서 분명한 것은 여러분이 지금 만들어 놓은 코드가 이후에도 계속 사용된다면 보다 많은 데이터를 처리하게 될 것이라는 점이다. 잘못된 알고리즘이라면 그 증가량을 버티지 못할 것이다.

 

따라서, 미래를 대비하고 싶다면 현재보다 많은 파일, 보다 큰 데이터베이스, 더 많은 픽셀과 창, 처리량, 전송량을 처리할 수 있게끔 만들어야 한다. 이는 C++ 표준 라이브러리가 널리 사용되는 이유와 직결되는 부분이기도 하다.

 

명심할 내용은 두 가지다.

첫 번째는 데이터의 크기가 처리에 문제가 생길 정도로 늘어난 것을 확신하지 않는 이상 그에 따른 알고리즘을 사용하지 말라는 것, 보다 규모가 작은 알고리즘을 사용함으로 인해서 얻을 수 있는 이익(명확성, 간결성)이 없다고 판단될 때는 그 크기를 늘리는 데 주저하지 말라는 것이다.

 

  • 고정된 크기의 배열보다는 유연하고 동적인 데이터 할당을 사용하자.
  • 알고리즘의 실제 복잡성을 알고 있어야 한다.
  • 선형 알고리즘이나 가장 빠른 알고리즘을 사용하라.
  • 선형 알고리즘보다 나쁜 알고리즘은 사용을 피하라.
  • 정말 벼랑 끝에 몰려서 다른 방법이 없을 때가 아니면 지수 알고리즘은 피하라.

두 번째 명심할 내용은 최적화가 필요한 것으로 판단되고 중요할 지라도, 특히 데이터의 증가 때문에 그럴지라도,

추가 작업을 덜어내는 등의 세부적인 최적화보다는 전체 복잡성을 향상하는 데 노력하라는 점이다.

728x90
반응형