수치 분석 과정에서 문제의 크기에 따라 필요한 부동 소수점 연산 (플롭) 수를 계산하여 알고리즘의 효율성을 분석하는 방법을 배웠습니다. 예를 들어, Numerical Linear Algebra에 관한 Trefethen & Bau의 텍스트에는 플롭 카운트에 대한 3D 모양의 그림도 있습니다.
캐시에없는 것을 가져 오기위한 메모리 대기 시간이 플롭 비용보다 훨씬 크기 때문에 "플롭이 비어있다"고 말하는 것이 유행입니다. 그러나 우리는 여전히 최소한 수치 분석 과정에서 학생들에게 플롭을 세도록 가르치고 있습니다. 대신 메모리 액세스를 계산하도록 그들에게 가르쳐야합니까? 새로운 교과서를 작성해야합니까? 아니면 메모리 액세스가 너무 머신별로 시간을 소비합니까? 플롭 또는 메모리 액세스가 병목 현상인지 여부와 관련하여 장기 추세는 무엇입니까?
참고 : 아래 답변 중 일부는 "몇 가지 플롭을 저장하거나 캐시 성능을 향상시키기 위해 구현을 강박 적으로 다시 작성해야합니까?"와 같은 다른 질문에 대답하는 것 같습니다. 그러나 내가 묻는 것은 " 산술 연산이나 메모리 액세스 측면에서 알고리즘의 복잡성을 추정하는 것이 더 유용한가 ?"