https://1brc.dev/

1 Billion Record Challenge

말그대로 10억개 row 를 처리하는거임
빠르게 더 빠르게 더 더 빠르게

간만에 고민하고 찾아봣던 것들은 다음과 같음
- thread scaling 과 overhead, 그리고 균형점 찾기 및 최적화
  - parallel 하게 뭔가 처리할때 fine grained 하게 task 나누고 배분하기
- 그렇게 처리한 작업들의 aggregation 은 어떻게 할건지
- 내가 사용하는 언어/런타임에서 사용하는 primitive datatype 의 스펙

그리고 내가 최대한 깎을만큼 깎아본 뒤엔 다른 사람들이 쓴 코드들을 찾아보고, 인상깊엇던 것들을 좀 적어보자면
- 속도를 위한 자체적인 자료구조 및 casting 설계 및 구현(메모리 사용량이나 락 고려)
- 포인터의 적극적인 활용
- 비트연산 등으로 연산 최적화 
정도엿음

---

아마 여기 사람들은 대체적으로 긱 성향이 잇어보이니 이런거 좋아하지않을까? 해서 소개해봣음

닉값처럼 평소엔 트래픽의 문제가 생기면 거진 컨테이너단위로 스케일아웃시켜서 일단 탱킹시키고 그사이에 병목걸리는구간 어딘지 뜯어서 개선하는 식으로 대응햇는데 간만에 재미잇엇다

토요일에 가볍게 하려다가 밤새가면서 햇네

---

여담) 재밋던거나 여담격으로 몇개 적어보자면...

[ 다시는php를무시하지마라 ]

7e988175bd831e8023e88394469c706a60331c32af75ff3da2ffbc88b78de2adf3efa5baf0014fca7a1d91985374a8c589135f06

- nodejs 로 naive 하게 짜면 대략 100,000ms 걸림
  - worker thread 쥐어짜면 대략 30,000ms 까지 깎을수잇음
- 근데 php 로 naive 하게 짠게 25,000ms임 


[ 게임터뜨리는썩은물 ]

- Java 1BRC 1등 기록은 1,500ms 임, 위 링크가 그 1등의 코드

- 근데 이사람이 누구냐하면 GraalVM 만든사람임, 오라클 연구원...


[ 로망의Golang ]


- Golang 으로 105,000ms, 55,800ms, ... 24,300ms, 3990ms 로 줄여나간 기록을 담은 글임, 로망이 넘쳐서 공유해봄

---

님들도 함 해보쉴?
본문 링크가 안먹어서 댓글에 링크 남겻음