본문 바로가기
[실용주의 프로그래머] 알고리즘의 속도 [실용주의 프로그래머] 알고리즘의 속도 -실용주의 프로그래머가 거의 날마다 사용하는 추정이 있다.알고리즘이 사용하는 자원, 곧 시간, 프로세서, 메모리 등등을 추정하는 것이 그것이다.대문자 O 표기법(big O notation)이라고 불리는 근사값을 기록하는 방식을 이용하면 답을 찾을 수 있는 경우가 많다. -일반적으로 입력의 크기는 알고리즘에 영향을 준다. 입력의 크기가 클수록, 알고리즘의 수행시간이 길어지거나 사용하는 메모리 양이 늘어난다. -알고리즘과 시간의 상관관계가 선형적이라면(늘어나는 시간이 입력값과 비례한다면) 큰 상관이 없다.그러나 알고리즘은 대개 선형적이지 않다.선형보다 더 적은 경우도 있지만, 훨씬 많은 경우도 많다. -우리는 반복문이나 재귀 호출을 담고 있는 코드를 작성할때면 언제나 .. 2018. 11. 4.
[Java Concurrency] 성능, 확장성 #1 [Java Concurrency] 성능, 확장성 - 스레드를 사용하는 가장 큰 목적은 바로 성능을 높이고자 하는 것이다. 스레드를 사용하면 시스템의 자원을 훨씬 효율적으로 활용할 수 있고, 앱으로 하여금 시스템이 갖고 있는 능력을 최대한 사용하게 할 수 있다. 그와 동시에 기존 작업이 실행되고 있는 동안 새로 등록된 작업을 즉시 실행할 수 있는 준비를 갖추고 있기 때문에 앱의 응답 속도를 향상시킬 수 있다. - 성능을 높이는 방법은 대부분 앱의 내부 구조를 복잡하게 만들어야 하는 경우가 많고, 따라서 안전성과 활동성에 문제가 생길 가능성도 적지 않다. 최악의 경우에는 성능을 높이기 위해 적용한 프로그래밍 기법 때문에 프로그램의 다른 부분에서 역효과를 가져오거나 성능상에 문제를 일으킬 수도 있다. - 성능.. 2017. 5. 3.
반응형