▲GN⁺ 2023-08-13 | parent | ★ favorite | on: 가장 빠른 브랜치리스 바이너리 검색(mhdm.dev)Hacker News 의견 기사는 브랜치 없는 이진 검색의 개념과 잠재적 이점에 대해 논의합니다. 한 댓글에서는 브랜치 제거의 필요성을 의문시하며, 브랜치 예측 실패로 인한 파이프라인 정체가 아키텍처의 본질적인 부분이 아니라고 제안합니다. 댓글에서는 모든 작업이 본질적으로 브랜치라고 더 설명하며, 이러한 브랜치가 성능에 해를 끼치지 않는 이유는 주 파이프라인에서의 브랜치가 아니기 때문이라고 합니다. 또 다른 댓글에서는 lowerBound를 구현하기 위해 "bare-metal" 언어로 컴파일되는 Nim 언어의 사용을 제안합니다. 코드가 가장 먼저 일치하는 것을 반환하는지 아니면 어떤 일치하는 것을 반환하는지에 대한 논의가 있으며, 코드의 기능을 이해하는 것의 중요성을 강조합니다. 한 댓글에서는 블로그 게시물의 직관적인 소개를 칭찬하며, 이는 가장 빠른 일반 이진 검색 C++ 구현을 빠르게 제시합니다. 댓글에서는 Zig stdlib이 이진 검색을 위해 C++를 호출하지 않는다고 지적하며, Zig stdlib의 이진 검색에 대한 링크를 제공합니다. 이진 검색과 브랜치의 문제에 대한 논의가 있으며, 문제는 브랜치 자체가 아니라 비교가 완료될 때까지 다음에 가져올 메모리 위치를 모르는 데이터 의존성에서 발생한다고 제안합니다. 댓글에서는 Cascade Lake 프로세서에서의 이진 검색 성능 결과를 공유하며, clang이 이 특정 코드를 최적화하는 데 gcc보다 더 나쁘다고 제안합니다. 한 댓글에서는 "BUT RUST" 링크의 목적지에 대해 의문을 제기하며, 이 링크가 오래된 것으로 보인다고 합니다. 댓글에서는 결과가 더 복잡한 비교 함수로는 유지되지 않는다고 지적하며, 최상의 성능은 기본 유형에 대해 sb_lower_bound를 사용하고 그 외의 경우에는 std::lower_bound를 사용함으로써 달성될 수 있다고 제안합니다. 마지막 댓글에서는 예측할 수 없는 속성이 이제 cmov 변환 패스에 영향을 미친다고 언급하며, 추가 정보를 위한 링크를 제공합니다.
Hacker News 의견
lowerBound를 구현하기 위해 "bare-metal" 언어로 컴파일되는 Nim 언어의 사용을 제안합니다.sb_lower_bound를 사용하고 그 외의 경우에는std::lower_bound를 사용함으로써 달성될 수 있다고 제안합니다.