# serde_json 문자열 20% 속도 향상

> Clean Markdown view of GeekNews topic #16451. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=16451](https://news.hada.io/topic?id=16451)
- GeekNews Markdown: [https://news.hada.io/topic/16451.md](https://news.hada.io/topic/16451.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-08-25T08:34:10+09:00
- Updated: 2024-08-25T08:34:10+09:00
- Original source: [purplesyringa.moe](https://purplesyringa.moe/blog/i-sped-up-serde-json-strings-by-20-percent/)
- Points: 2
- Comments: 0

## Topic Body

### serde_json 성능 개선 경험 공유

- **서론**
  - 최근 성능 작업을 통해 serde_json 문자열 처리 속도를 20% 향상시킴.
  - Rust의 직렬화 및 역직렬화 프레임워크인 serde와 JSON 처리를 위한 serde_json 사용.
  - 성능 개선을 통해 생태계 전반에 걸쳐 이익을 얻을 수 있음.

#### 시작점

- **#[iex] 라이브러리 작업**
  - 성능 벤치마크로 serde와 serde_json 사용.
  - 성능 중요한 코드에서 의문스러운 결정 발견.
  - 에러 경로가 성공 경로보다 2배 이상 느림.

#### 문제 해결

- **에러 경로 최적화**
  - `position_of_index` 함수가 병목 현상 유발.
  - `memchr` 크레이트 사용하여 문자열 검색 최적화.
  - 성능 개선 결과: 에러 경로 속도 향상.

#### 추가 최적화

- **문자열 파싱 최적화**
  - `memchr2` 함수 사용 시도 실패.
  - SWAR(레지스터 내 SIMD) 기법 사용하여 제어 문자 검색 최적화.
  - 짧은 문자열에서 성능 저하 문제 해결.

#### 유니코드 처리

- **유니코드 파싱 최적화**
  - 16진수 디코딩 성능 개선.
  - `HEX` 테이블 사용하여 효율적인 디코딩 구현.
  - 성능 개선 결과: JSON 인코딩된 War and Peace 파싱 속도 21% 향상.

#### 최종 결과

- **UTF-8 인코딩 최적화**
  - `char::encode_utf8` 함수 대신 직접 UTF-8 인코딩 구현.
  - 성능 개선 결과: War and Peace 파싱 속도 추가 9% 향상.

### GN⁺의 정리

- 이 글은 Rust 생태계에서 널리 사용되는 serde_json의 성능을 20% 향상시킨 경험을 공유함.
- 성능 최적화 과정에서 다양한 기법과 문제 해결 방법을 다룸.
- 유니코드 및 문자열 파싱 최적화는 JSON 처리 성능을 크게 향상시킴.
- 이 글은 성능 최적화에 관심 있는 개발자들에게 유익하며, Rust 생태계 전반에 긍정적인 영향을 미칠 것임.

## Comments



_No public comments on this page._
