상황에 따라 다릅니다.
"2 차 런타임 성능 버그 수정"은 일반적으로 내가 보는 것입니다. 그러나 수정이 필요한지 여부 (코드 변경)는 상황에 따라 다릅니다.
데이터베이스는 시간 복잡성을 개선하기위한 많은 도구를 제공합니다. 예를 들어, 데이터베이스에서 상위 N 개의 결과를 얻으려면 그렇게 말하십시오. 비효율적 인 kludge를 내장 된 최적화 된 호출로 변환 할 때 설명이 불필요한 것처럼 보입니다.
코드 검토 (토론)를받을 수있는 이차 런타임 알고리즘을 고려하는 이유는 느리기 때문에 (느리게 상대적입니다. 동료 프로그래머)는 일상 생활에서 기대가 혼합되어 선형 런타임에서 너무 멀리 벗어난 소프트웨어 기능이 본질적으로 불편합니다.
소프트웨어 성능에 대한 많은 고객 불만은 다음 두 가지 범주로 분류됩니다.
전체 시스템 (소프트웨어 및 하드웨어)은 예상 사용량을 기준으로 지정되었습니다. 지난 주에 모든 것이 제대로 작동하고 특정 기능에 5 초도 걸리지 않았습니다. 이번 주에는 업데이트를 설치 한 후 동일한 기능이 1 분 이상 걸립니다.
- 이것은 이전에 벤치마킹 된 성능과 비교 한 것입니다. 고객은 인간의 시간 규모 (초에서 분)의 절대 척도로 미래의 성능을 유지합니다.
시스템에 100 개의 작업을 제출했습니다. 단일 작업에 걸리는 시간과 비교하여 처리하는 데 400 배의 시간이 걸리는 이유는 무엇입니까?
- 고객은 처리 시간이 선형 일 것으로 예상합니다. 실제로 고객은 선형보다 느린 작업이 있다는 것을 이해하거나 받아 들일 수 없습니다.
이러한 이유로 고객은 실행 시간이 모두 버그 인 경우 버그로 간주합니다.
2 차 런타임 알고리즘이 문제를 일으키지 않는다는 것을 설명하는 합법적 인 주장 (즉, 코드 변경이 필요하지 않음) :
- 이 2 차 런타임 함수가 일반적으로 처리하는 작업 크기는 다소 제한적입니다.
- 일반적인 크기 범위를 감안할 때 실제 (절대) 실행 시간은 여전히 무시할 정도로 작습니다.
- 사용자가 실제로 눈에 띄게 충분히 큰 작업을 제출하려고하면 사용자에게 장기 실행 시간에 대한 경고 메시지가 표시됩니다
- 시스템 사용자는 모두 전문가이므로 자신이하는 일을 알고 있습니다. 예를 들어, API 사용자는 API 문서에서 작은 글씨를 읽었어야합니다.
일반적인 응용 프로그램 개발에 유용한 많은 알고리즘은 실제로 선형보다 느리기 때문에 (대부분 정렬에서와 같이 O (N log N)) 실제로 대규모 소프트웨어는 해당 응용 프로그램의 관련 부분 만 정렬하여이 문제를 해결하려고 시도합니다. 유사한 효과를 얻는 히스토그램 (통계) 필터링 기술을 사용하십시오.
이것은 소프트웨어 고객에게 적용되지만 소프트웨어 라이브러리 또는 API 기능의 사용자를 "고객"으로 간주하더라도 대답은 여전히 적용됩니다.