U E D R , A S I H C RSS

Programming Pearls/Column6



1. Perspective on Programming


1.1. A Case Study

  • 어떤 프로그램이 1년 걸렸었는데 단계별로 쪼개서 튜닝을 했더니 하루만에 되더라하는 내용이 씌어있다.
  • 그 단계를 살펴보면,
    • 알고리즘과 자료구조의 교체 : Sequential 한것을 Binary Tree로 교체함으로써 O(n*n)이 O(n*lg n)으로 줄었다.
    • 알고리즘의 튜닝
    • 자료구조의 개조
    • 코드 튜닝
      • 시스템 독립적인 코드 튜닝 : double형보다 시간이 절반 정도 걸리는 float를 썼다.
      • 시스템 의존적인 코드 튜닝 : 크리티컬한 부분을 어셈블리로 다시 짰다.
    • 하드웨어 업글 : 부동소숫점 연산 가속기를 사용
  • 이 각각의 단계에서 빨라진 만큼을 다 곱하니 대략 400이 나오더라하는 내용이 씌어있다.

1.2. Design Level

  • 디자인 레벨에 관한 가이드
    • 문제 정의
    • 시스템 구조
    • 알고리즘과 자료구조
    • 코드 튜닝
    • 시스템 소프트웨어
    • 하드웨어

1.3. Principles

  • 심플한 디자인의 중요성은 아무리 강조해도 지나치지 않다.
  • 적은 양의 스피드업을 원한다면 가장 고치기 쉬운 부분만을 고치자.
  • 많은 양의 스피드업을 원한다면 다단계를 고치자. 한군데를 고침으로써 다른 부분도 고칠것이 생긴다.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:18
Processing time 0.0817 sec