English

Transcoding Unicode Characters with AVX-512 Instructions

Data Structures and Algorithms 2024-08-06 v4

Abstract

Intel includes in its recent processors a powerful set of instructions capable of processing 512-bit registers with a single instruction (AVX-512). Some of these instructions have no equivalent in earlier instruction sets. We leverage these instructions to efficiently transcode strings between the most common formats: UTF-8 and UTF-16. With our novel algorithms, we are often twice as fast as the previous best solutions. For example, we transcode Chinese text from UTF-8 to UTF-16 at more than 5 GiB/s using fewer than 2 CPU instructions per character. To ensure reproducibility, we make our software freely available as an open source library. Our library is part of the popular Node.js JavaScript runtime.

Cite

@article{arxiv.2212.05098,
  title  = {Transcoding Unicode Characters with AVX-512 Instructions},
  author = {Robert Clausecker and Daniel Lemire},
  journal= {arXiv preprint arXiv:2212.05098},
  year   = {2024}
}
R2 v1 2026-06-28T07:28:27.884Z