첫 번째 사용자는 데이터 조작을 위한 코드 최적화 경험이 없었기 때문에, cat, wc 등을 사용해 기본 측정값을 얻는 첫 번째 섹션이 특히 흥미로웠다고 언급함. 이러한 방법은 "합리적인" 범위를 얻는 쉬운 방법이라고 생각함.
두 번째 사용자는 Polars 라이브러리를 사용한 경우의 처리 시간이 33초임을 언급하며, 가장 빠른 수작업 최적화 솔루션에 근접하는 가장 간단한 솔루션에 대해 관심을 표현함.
세 번째 사용자는 Go 언어의 성능 분석 보고서가 혼란스럽다고 언급하며, 특정 코드 라인의 실행 시간이 직관적이지 않을 경우, 데이터가 예측하기 어렵고 분기 예측기가 잘못 예측할 수 있다고 설명함.
네 번째 사용자는 Go 언어로 1BRC(1 Billion Row Challenge)를 수행한 결과를 공유하며, Go 언어 특유의 최적화 기법들을 배웠다고 언급함. 예를 들어, unsafe.Pointer를 사용한 경계 검사 없는 메모리 읽기, 표준 라이브러리의 bytes와 bits 패키지 함수들이 어셈블리로 작성됨, 가비지 컬렉션을 끄는 설정, 스레드에 고루틴을 고정하는 방법 등이 있음.
다섯 번째 사용자는 쉘 스크립트 개발자가 다른 언어 개발자들이 준비하는 동안 이미 특정한 10억 행의 데이터 처리를 완료했을 것이라고 주장함.
여섯 번째 사용자는 데이터베이스가 애플리케이션 코드보다 빠르고, 덜 복잡하며, 데이터 업데이트에 더 강건하다고 주장하며, 데이터베이스에서 더 많은 작업을 수행해야 한다고 강조함.
일곱 번째 사용자는 2010년에 PostgreSQL을 사용해 환경 캐나다의 기후 데이터 2억 7천만 행을 조회하는 웹 앱을 개발했으며, 이 소프트웨어가 수상한 경험을 공유함. 이 앱은 1분 이내에 보고서를 생성할 수 있도록 최적화되었음.
여덟 번째 사용자는 Go 언어에서 병렬 코드가 여전히 Go의 관용적인 코드 스타일을 유지한다는 사실이 멋지다고 언급함.
아홉 번째 사용자는 대규모 텍스트 파일을 CLI에서 다룰 때 유니코드 파싱을 생략하면 awk, grep 등이 한 차원 빠르다고 언급하며, awk 솔루션에 LC_ALL=C를 추가하면 1분 이내로 처리 시간을 단축할 수 있다고 주장함.
마지막 사용자는 가장 빠른 Java 버전이 가장 빠른 Go 버전보다 빠르다는 것이 흥미롭다고 언급하며, 자바 가상 머신(JVM)의 성능이 상당히 좋다고 평가함.
Hacker News 의견
cat
,wc
등을 사용해 기본 측정값을 얻는 첫 번째 섹션이 특히 흥미로웠다고 언급함. 이러한 방법은 "합리적인" 범위를 얻는 쉬운 방법이라고 생각함.unsafe.Pointer
를 사용한 경계 검사 없는 메모리 읽기, 표준 라이브러리의bytes
와bits
패키지 함수들이 어셈블리로 작성됨, 가비지 컬렉션을 끄는 설정, 스레드에 고루틴을 고정하는 방법 등이 있음.awk
,grep
등이 한 차원 빠르다고 언급하며,awk
솔루션에LC_ALL=C
를 추가하면 1분 이내로 처리 시간을 단축할 수 있다고 주장함.