Python JSON 라이브러리 비교: json vs ujson vs orjson

2025. 2. 26. 10:48·파이썬/Basic
반응형
# 설치
pip install ujson
pip install orjson

각 라이브러리의 특징

import json
import ujson
import orjson

# 기본 json
data = {"name": "John", "age": 30}
json_str = json.dumps(data)
json_obj = json.loads(json_str)

# ujson
ujson_str = ujson.dumps(data)
ujson_obj = ujson.loads(ujson_str)

# orjson
orjson_bytes = orjson.dumps(data)
orjson_obj = orjson.loads(orjson_bytes)

성능 비교

import timeit
import datetime

test_data = {
    "string": "hello world",
    "number": 123.456,
    "boolean": True,
    "null": None,
    "array": [1, 2, 3, 4, 5],
    "object": {"key": "value"},
    "date": datetime.datetime.now()
}

# 직렬화 성능 테스트
def test_json_dumps():
    json.dumps(test_data, default=str)

def test_ujson_dumps():
    ujson.dumps(test_data, default=str)

def test_orjson_dumps():
    orjson.dumps(test_data)

# 결과 예시:
# json: 10.5 μs
# ujson: 5.2 μs
# orjson: 2.1 μs

특수 타입 처리

from decimal import Decimal
from datetime import datetime
import uuid

special_data = {
    "decimal": Decimal("123.456"),
    "datetime": datetime.now(),
    "uuid": uuid.uuid4(),
    "bytes": b"binary data"
}

# json
json.dumps(special_data, default=str)

# ujson
ujson.dumps(special_data, default=str)

# orjson
orjson.dumps(
    special_data,
    default=lambda x: x.isoformat() if isinstance(x, datetime) else str(x)
)

메모리 사용량 비교

import sys

large_data = [{"id": i, "value": f"test{i}"} for i in range(100000)]

# 메모리 사용량 측정
def get_size(obj):
    return sys.getsizeof(obj)

json_size = get_size(json.dumps(large_data))
ujson_size = get_size(ujson.dumps(large_data))
orjson_size = get_size(orjson.dumps(large_data))

라이브러리 특징 비교

특징 json ujson orjson
구현 언어 Python C Rust
상대적 성능 느림 빠름 매우 빠름
메모리 사용량 높음 중간 낮음
타입 지원 기본 제한적 광범위
설치 난이도 기본 내장 쉬움 중간
유지보수 매우 안정적 안정적 활발한 개발

사용 케이스 권장사항

사용 케이스 권장 라이브러리 이유
일반적인 사용 json 호환성, 안정성
대용량 데이터 orjson 최고 성능, 메모리 효율
간단한 고성능 ujson 쉬운 설치, 충분한 성능

 

이러한 특성을 고려하여 프로젝트의 요구사항에 맞는 라이브러리를 선택하면 됩니다.

 

저작자표시 비영리 변경금지 (새창열림)

'파이썬 > Basic' 카테고리의 다른 글

딕셔너리 빈 값 제거 완전 가이드: 깔끔한 데이터 정리 기법  (2) 2025.06.04
Python의 UnicodeDecodeError 해결하기: cp949 코덱 오류  (0) 2025.05.09
Geopy : 지리 정보 다루기  (2) 2025.02.10
lru_cache : 캐싱 메모리  (0) 2025.02.08
함수 하나로 여러 가지 처리하기? Python 오버로딩  (2) 2024.12.27
'파이썬/Basic' 카테고리의 다른 글
  • 딕셔너리 빈 값 제거 완전 가이드: 깔끔한 데이터 정리 기법
  • Python의 UnicodeDecodeError 해결하기: cp949 코덱 오류
  • Geopy : 지리 정보 다루기
  • lru_cache : 캐싱 메모리
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    리뷰이관
    스크립트 실행
    리뷰관리
    쇼핑몰리뷰
    programming101
    스마트스토어리뷰
    믈레코비타멸균우유
    rtsp
    스크립트 실행 순서
    codingcommunity
    cv2
    programmerlife
    appdevelopment
    learntocode
    unity
    유니티
    codingtips
    카페24리뷰
    리스트
    상품 리뷰 크롤링
    C#
    Python
    list
    라떼우유
    ipcamera
    카페24리뷰이관
    devlife
    파이썬
    셀레니움
    긴유통기한우유
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
Python JSON 라이브러리 비교: json vs ujson vs orjson
상단으로

티스토리툴바