귀하의 프로그램은 병목 현상이 무엇이든 최대한 빠릅니다. 전반적인 성능을 향상 시키려면 데이터를 메모리에 저장하는 등의 작업을 수행하는 것이 좋습니다. 그러나 성과를 향상시킬 것이라고 말하는 어렵지 않고 빠른 규칙은 없습니다. 하나의 병목을 수정하면 새로운 것이 병목이됩니다. 따라서 한 가지 문제를 해결하면 다음 병목 현상에 따라 성능이 1 % 향상되거나 1000 %가 증가 할 수 있습니다. 당신이 개선하고있는 것이 여전히 병목 일 수 있습니다.
내가는 일반적으로 1 ~ 3의 수준에 맞는 이런 것들에 대해 생각 :
- 열망. 디스크 나 네트워크에서 필요한 것이 있거나 계산 결과가 나오면 가져 오거나해야합니다. 이것은 프로그램하기가 가장 쉬우 며, 테스트 및 디버그가 가장 쉽지만 성능은 최악입니다. 이 부분이 병목 현상이 아니라면 괜찮습니다.
- 게으른. 특정 읽기 또는 계산을 수행 한 후에는 몇 밀리 초에서 영원까지 일정 기간 동안 다시 수행하지 마십시오. 이렇게하면 프로그램에 많은 복잡성이 추가 될 수 있지만 읽기 또는 계산이 비싸면 엄청난 이점을 얻을 수 있습니다. 및
- 과도한. 이것은 앞의 두 가지 조합과 매우 비슷합니다. 결과는 캐싱됩니다. 그러나 읽기 또는 계산 또는 요청 대신 일정한 양의 선점 활동이있어 일 수도 있고 일 수 있습니다. 파일에서 10K를 읽는 것처럼 나중에 다음 10K 블록을 원할 가능성이 높습니다. 지연 실행보다는 오히려 요청이있는 경우에 대비하여 얻을 수 있습니다.
도널드 크 누스 (Donald Knuth)가 인용 한 (너무 과도하게 사용되고 잘못 인용되는) 인용문은 "조기 최적화는 모든 악의 근원"이라고 말합니다. 열망하고 지나치게 열정적 인 솔루션은 엄청난 양의 복잡성을 추가하므로 유용한 이점을 얻지 못하는 부분에 대해서는 아무런 요령도 없습니다.
프로그래머는 무엇이 필요한지 그리고 유용할지 여부를 결정하기 전에 무엇인가에 대한 (혐의가있는) 최적화 된 버전을 만드는 실수를 범합니다.
내 자신의 문제는 다음과 같습니다. 에이있을 때까지 문제를 해결하지 마십시오.
@Brendan은 "RAM에서로드하는 대신"과 "디스크에서로드하는 대신에"같은 것을 의미합니다. 아, 영어의 불가사의 :-) – paxdiablo
네, 완전히 잘못 읽었습니다. "RAM에서로드하는 대신"라고 말한 것 같습니다. 내 잘못이야. –