질문 고정
비교하려는 대상이 반복문 문법인지, 할당 수인지, 알고리즘 복잡도인지 먼저 정한다.
다른 알고리즘을 문법 비교로 착각하지 않는다Rust가 빠르다는 말이나 반복문과 iterator를 느낌으로 비교하는 것은 근거가 약하다. Criterion 같은 벤치 도구, release 최적화, black_box, 입력 크기 분포, allocation 수, 경계값 점검 제거 여부를 고정해야 비교가 의미를 가진다.
비교하려는 대상이 반복문 문법인지, 할당 수인지, 알고리즘 복잡도인지 먼저 정한다.
다른 알고리즘을 문법 비교로 착각하지 않는다debug 빌드가 아니라 최적화가 켜진 release 조건에서 측정한다.
debug는 경계값 점검와 최적화 차이가 크게 보인다컴파일러가 계산을 제거하지 못하도록 입력과 결과를 black_box로 감싼다.
너무 똑똑한 최적화를 막는다작은 입력, 큰 입력, 이미 정렬된 입력, 랜덤 입력처럼 실제 사용 조건을 나눈다.
한 케이스만 빠른 코드는 위험하다allocation, cache locality, iterator fusion, 경계값 점검, inlining 중 무엇이 차이를 만드는지 본다.
수치만 있고 원인이 없으면 재현성이 약하다