목록전체 글 (18)
cgiosy.dev
V8 분석하기 - 문자열
V8의 코드를 보며 문자열을 어떻게 관리하는지 작성하였다. 문자열은 기본적으로 1바이트 배열 / 2바이트 배열로 구분된다. 대부분의 경우 효율을 위해 1바이트를 사용하되, 표현 불가능한 문자가 포함되어 있으면 2바이트로 전환한다. 유니코드 처리를 다른 언어들, 예를 들면 Go는 rune, Rust는 grapheme처럼 별도의 타입이 존재하고 개발자가 이를 신경써야 하는 경우가 많다. 혹은 UTF-8처럼 가변 길이 인코딩을 써서 문자열 랜덤 액세스가 $O(N)$이거나... 이와 달리 JS에선 유니코드 문자열에 고통받을 일을 크게 줄였다. 개인적으로 다른 언어들에 비하면 평범한 개발자에게 매우 친화적인 구현이라고 생각한다. 물론 반대로 말하면 개발자의 선택권이 제약된단 뜻이기도 하고, 다음처럼 지식이 요구되..
카테고리 없음
2022. 7. 6. 21:35
LIS
https://cgiosy.github.io/posts/lis
카테고리 없음
2019. 12. 11. 15:52