https://1brc.dev/
1 Billion Record Challenge
말그대로 10억개 row 를 처리하는거임
빠르게 더 빠르게 더 더 빠르게
간만에 고민하고 찾아봣던 것들은 다음과 같음
- thread scaling 과 overhead, 그리고 균형점 찾기 및 최적화
- parallel 하게 뭔가 처리할때 fine grained 하게 task 나누고 배분하기
- 그렇게 처리한 작업들의 aggregation 은 어떻게 할건지
- 내가 사용하는 언어/런타임에서 사용하는 primitive datatype 의 스펙
그리고 내가 최대한 깎을만큼 깎아본 뒤엔 다른 사람들이 쓴 코드들을 찾아보고, 인상깊엇던 것들을 좀 적어보자면
- 속도를 위한 자체적인 자료구조 및 casting 설계 및 구현(메모리 사용량이나 락 고려)
- 포인터의 적극적인 활용
- 비트연산 등으로 연산 최적화
정도엿음
---
아마 여기 사람들은 대체적으로 긱 성향이 잇어보이니 이런거 좋아하지않을까? 해서 소개해봣음
닉값처럼 평소엔 트래픽의 문제가 생기면 거진 컨테이너단위로 스케일아웃시켜서 일단 탱킹시키고 그사이에 병목걸리는구간 어딘지 뜯어서 개선하는 식으로 대응햇는데 간만에 재미잇엇다
토요일에 가볍게 하려다가 밤새가면서 햇네
---
여담) 재밋던거나 여담격으로 몇개 적어보자면...
[ 다시는php를무시하지마라 ]
- nodejs 로 naive 하게 짜면 대략 100,000ms 걸림
- worker thread 쥐어짜면 대략 30,000ms 까지 깎을수잇음
- 근데 php 로 naive 하게 짠게 25,000ms임
[ 게임터뜨리는썩은물 ]
- Golang 으로 105,000ms, 55,800ms, ... 24,300ms, 3990ms 로 줄여나간 기록을 담은 글임, 로망이 넘쳐서 공유해봄
---
님들도 함 해보쉴?
본문 링크가 안먹어서 댓글에 링크 남겻음
https://1brc.dev/
존나 재밌겠네 고맙다
오 이번주말에 해봐야겠노
1500ms ㄷㄷ
서버스펙은 정해진거임?
node 씹 ㅋㅋ