로그인

검색

OBG
조회 수 748 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄

https://v8.dev/blog/json-stringify

 

ChatGPT 요약

주요 최적화 전략

1. Side‑Effect‑Free Fast Path (사이드 이펙트 없는 고속 경로)

  • JSON.stringify 실행 중 부수 효과(side effects) — 예를 들어 사용자 정의 코드 실행이나 가비지 컬렉션을 유발하는 내부 작업 — 가 없다고 판단되는 경우, 훨씬 빠른 전용 경로를 사용합니다.

  • 이 경로는 반복적(iterative) 구조로 구현되어 있기에, 재귀 사용 시 필요한 스택 오버플로우 검사 등을 줄일 수 있고, 깊은 중첩 객체도 안전하게 직렬화할 수 있습니다.

2. 문자열 표현별 특화 구현

  • V8 내부에서는 문자열이 ASCII만 포함된 경우 1바이트, 한 글자만 비-ASCII여도 전체가 2바이트로 메모리 이용됩니다.

  • 이를 고려해 1바이트 전용 문자열 처리기2바이트 전용 처리기를 각각 컴파일해 두었고, 적절한 시점에 효율적으로 전환할 수 있도록 구성했습니다.

3. SIMD 기반 문자열 이스케이프 검사

  • JSON 직렬화 시 자주 등장하는 이스케이프 대상 문자(", \ 등)를 찾기 위해:

    • 긴 문자열: SIMD 하드웨어 명령어(예: ARM64 Neon)를 활용해 여러 문자를 한 번에 검사

    • 짧은 문자열: SWAR 방식(SIMD Within A Register)으로 일반 레지스터에서 비트 조작으로 병렬 검사 수행

  • 이 방식 덕분에 특수 문자가 없다면—종종 있는 경우—문자열 전체를 단순히 복사만 해도 되므로 매우 빠릅니다.

4. Express Lane (익스프레스 레인)

  • 고속 경로 내부에서도, 일반적인 속성 순회 절차를 또 일부 간소화하는 **더 빠른 “익스프레스 레인”**이 따로 구성되어 있습니다.

  • 기본은 키가 문자열이어야 하고 심벌(Symbol)이 아닌 등 일반적인 조건에 부합할 때 적용됩니다.


제한 사항

  • replacerspace 옵션 사용 시에는 고속 경로를 이용할 수 없고, 느린 일반 경로로 처리됩니다.

  • 객체나 배열에 커스텀 .toJSON() 메서드가 있거나, 숫자 인덱스형 속성이 존재하는 등의 경우에도 일반 경로로 처리됩니다.

  • 문자열 타입이 복잡한 내부 표현(예: ConsString)을 사용하는 경우도 일반 경로로 넘어갑니다.


요약

V8는 JSON.stringify평균적으로 두 배 이상 빠르게 만들기 위해, 부수 효과 없는 경우에만 작동하는 고속 경로, 문자열 데이터 타입에 맞춘 특화 구현, 그리고 SIMD 기반 처리 등의 최적화 전략을 도입했습니다. 이로 인해 직렬화 성능이 크게 향상되었고, 특히 일반적인 단순 데이터 객체의 경우 훨씬 더 빠르게 직렬화할 수 있게 되었습니다.

 

1차 출처: https://news.ycombinator.com/item?id=44786005

2차 출처: https://news.hada.io/topic?id=22356

 

?

  1. Programming 게시판 관련

    Date2014.11.01 CategoryTool/etc ByMoA Views16637
    read more
  2. Show GN: 유튜브 영상/웹페이지를 10초만에 구조화된 노트로 만드는 크롬 확장프로그램

    Date2025.09.07 CategoryTool/etc ByOBG Views107
    Read More
  3. VIM Master - Vim 명령어를 배우는 가벼운 브라우저 게임

    Date2025.09.07 CategoryTool/etc ByOBG Views130
    Read More
  4. 나노바나나 공식 출시! 구글 제미나이에서 직접 사용하는 방법

    Date2025.09.07 CategoryLLM ByOBG Views51
    Read More
  5. 구글 개발자가 말하는 나노바나나의 진짜 실체

    Date2025.09.07 CategoryLLM ByOBG Views46
    Read More
  6. llama.cpp gpt-oss-120b 5090으로 돌려본 후기

    Date2025.09.07 CategoryLLM ByOBG Views55
    Read More
  7. Claude Code를 최고의 설계 파트너로 만들기

    Date2025.08.28 CategoryLLM ByOBG Views552
    Read More
  8. 코딩 에이전트 만드는 법

    Date2025.08.28 CategoryLLM ByOBG Views656
    Read More
  9. Vibe Code an MVP Web App

    Date2025.08.28 CategoryLLM ByOBG Views547
    Read More
  10. I Want Everything Local — Building My Offline AI Workspace

    Date2025.08.28 CategoryDeeplearning ByOBG Views622
    Read More
  11. Kimi K2 클로드 코드와 함께 사용하는 방법

    Date2025.08.28 CategoryLLM ByOBG Views563
    Read More
  12. Build a Small Language Model (SLM) From Scratch

    Date2025.08.16 CategoryLLM ByOBG Views793
    Read More
  13. OpenAI의 새로운 오픈소스 모델은 사실상 Phi-5임

    Date2025.08.12 CategoryLLM ByOBG Views803
    Read More
  14. ChatGPT가 7억 명을 서비스할 수 있는데, 나는 왜 GPT-4 하나도 로컬에서 못 돌릴까?

    Date2025.08.12 CategoryLLM ByOBG Views1035
    Read More
  15. Omarchy, DHH가 만든 Linux 배포판

    Date2025.08.12 ByOBG Views1382
    Read More
  16. OpenAI의 gpt‑oss‑120b, gpt‑oss‑20b: 개인 컴퓨터에서 ChatGPT 사용?

    Date2025.08.12 CategoryLLM ByOBG Views973
    Read More
  17. AI가 만든 코드, 결국엔 모두 레거시가 된다?

    Date2025.08.12 CategoryLLM ByOBG Views882
    Read More
  18. 모던 Node.js 패턴 (2025)

    Date2025.08.07 ByOBG Views740
    Read More
  19. AI 발전을 따라잡는 나만의 방법 (그리고 당신도 꼭 해야 하는 이유)

    Date2025.08.07 CategoryDeeplearning ByOBG Views864
    Read More
  20. JSON.stringify를 두 배 이상 빠르게 만든 방법

    Date2025.08.07 CategoryWeb ByOBG Views748
    Read More
  21. OS 개발에 관한 작은 책

    Date2025.03.24 CategoryTool/etc ByOBG Views1570
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 16 Next
/ 16