Repolode
ashvardanian

ashvardanian/StringZilla

C, C++, Python, Rust, JavaScript, Go 등에서 검색, 해싱, 정렬, 편집 거리를 지원하는 SIMD·SWAR 가속 문자열 라이브러리입니다.

스타
3,574
포크
145
열린 이슈
33
마지막 커밋
12시간 전

어떤 프로젝트인가요?

StringZilla는 SIMD 및 SWAR CPU 명령어를 사용해 부분 문자열·문자 집합 검색, 해싱, 정렬, Levenshtein 거리 및 정렬 점수 계산, Unicode 대소문자 접기와 분할 같은 일반적인 문자열 연산을 가속하는 텍스트 처리 라이브러리입니다. 기존 표준 API와 함께 바로 사용할 수 있도록 설계되었습니다. 예를 들어 Python의 str.find, C의 strstr, C++의 std::string::find에 대응하는 StringZilla API가 있습니다.

핵심은 단일 헤더 C 라이브러리와 C++ 래퍼로 구성되며, Python, Rust, JavaScript, Swift, Go, C#, Java 바인딩을 제공합니다. 두 번째 계층인 StringZillas는 배치 편집 거리, 정렬 점수, 롤링 지문 계산을 위한 병렬 CPU 및 CUDA GPU 백엔드를 추가합니다. 프로젝트에는 AES 명령어 기반 해시 함수와, 지원되는 경우 하드웨어 SHA 확장을 사용하는 SHA-256 구현도 포함되어 있습니다.

이 라이브러리는 x86, Arm, RISC-V, PowerPC, WebAssembly를 대상으로 하며, 엔디언, 워드 크기, 운영체제에 관계없이 이식성을 갖추는 것을 목표로 합니다. 바인딩에 따라 기능의 성숙도는 다르며, 일부 Unicode 함수는 아직 활발히 개발 중이라고 프로젝트에서 안내합니다.

핵심 기능

  • 01SIMD 및 SWAR 명령어로 부분 문자열과 문자 집합 검색을 가속합니다.
  • 0264비트 AES 기반 함수와 하드웨어 가속 SHA-256을 사용해 해싱합니다.
  • 03문자열 컬렉션의 정렬과 집합 교집합을 지원합니다.
  • 04Levenshtein 및 Needleman-Wunsch 거리를 지원하며, CUDA를 통해 GPU에서 배치 실행할 수 있습니다.
  • 05Unicode 대소문자 접기, UTF-8 처리, TR29 분할을 지원합니다.
  • 06C, C++, Python, Rust, JavaScript, Swift, Go, C#, Java 바인딩을 제공합니다.

활용 사례

  • 대규모 말뭉치를 파싱하는 텍스트 중심 데이터 파이프라인을 가속합니다.
  • 성능이 중요한 서비스에서 느린 부분 문자열 검색이나 해싱 호출을 대체합니다.
  • 생물정보학이나 검색 워크로드를 위해 편집 거리 또는 정렬 점수를 배치로 계산합니다.
  • 데이터베이스 엔진 내부의 LIKE, ORDER BY, GROUP BY 유형 연산을 가속합니다.

빠른 시작

  1. 1

    Python 패키지를 설치합니다

    pip install stringzilla
  2. 2

    str 대신 Python에서 사용합니다

사용 전 알아둘 점

  • 모든 언어 바인딩에서 모든 기능을 사용할 수 있는 것은 아닙니다.
  • 일부 Unicode 기능(정규화, 세그먼테이션, 줄바꿈 감지)은 아직 개발 진행 중으로 표시되어 있습니다.

포함된 컬렉션

토픽

자주 묻는 질문

StringZilla은(는) 무엇인가요?
C, C++, Python, Rust, JavaScript, Go 등에서 검색, 해싱, 정렬, 편집 거리를 지원하는 SIMD·SWAR 가속 문자열 라이브러리입니다. StringZilla는 SIMD 및 SWAR CPU 명령어를 사용해 부분 문자열·문자 집합 검색, 해싱, 정렬, Levenshtein 거리 및 정렬 점수 계산, Unicode 대소문자 접기와 분할 같은 일반적인 문자열 연산을 가속하는 텍스트 처리 라이브러리입니다. 기존 표준 API와 함께 바로 사용할 수 있도록 설계되었습니다. 예를 들어 Python의 str.find, C의 strstr, C++의 std::string::find에 대응하는 StringZilla API가 있습니다.
StringZilla은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
StringZilla은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
StringZilla은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. StringZilla의 마지막 커밋은 2026년 10월 22일입니다.
StringZilla은(는) 어디에 사용할 수 있나요?
대규모 말뭉치를 파싱하는 텍스트 중심 데이터 파이프라인을 가속합니다. 성능이 중요한 서비스에서 느린 부분 문자열 검색이나 해싱 호출을 대체합니다. 생물정보학이나 검색 워크로드를 위해 편집 거리 또는 정렬 점수를 배치로 계산합니다. 데이터베이스 엔진 내부의 LIKE, ORDER BY, GROUP BY 유형 연산을 가속합니다.
StringZilla는 어떻게 설치하나요?
Python 패키지를 설치합니다: pip install stringzilla str 대신 Python에서 사용합니다
StringZilla은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/ashvardanian/StringZilla

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트