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