Berbagi pengalaman peningkatan performa serde_json
- Pendahuluan
- Baru-baru ini, melalui pekerjaan optimasi performa, kecepatan pemrosesan string di serde_json berhasil ditingkatkan sebesar 20%.
- Menggunakan serde, framework serialisasi dan deserialisasi Rust, serta serde_json untuk pemrosesan JSON.
- Peningkatan performa ini dapat memberikan manfaat di seluruh ekosistem.
Titik awal
- Pengerjaan library #[iex]
- Menggunakan serde dan serde_json untuk benchmark performa.
- Menemukan keputusan yang meragukan pada kode yang sensitif terhadap performa.
- Jalur error lebih dari 2 kali lebih lambat dibanding jalur sukses.
Penyelesaian masalah
- Optimasi jalur error
- Fungsi
position_of_index menyebabkan bottleneck.
- Menggunakan crate
memchr untuk mengoptimalkan pencarian string.
- Hasil peningkatan performa: kecepatan jalur error meningkat.
Optimasi tambahan
- Optimasi parsing string
- Upaya menggunakan fungsi
memchr2 gagal.
- Menggunakan teknik SWAR (SIMD di dalam register) untuk mengoptimalkan pencarian karakter kontrol.
- Menyelesaikan masalah penurunan performa pada string pendek.
Pemrosesan Unicode
- Optimasi parsing Unicode
- Meningkatkan performa decoding heksadesimal.
- Menggunakan tabel
HEX untuk mengimplementasikan decoding yang efisien.
- Hasil peningkatan performa: parsing War and Peace yang di-encode sebagai JSON menjadi 21% lebih cepat.
Hasil akhir
- Optimasi encoding UTF-8
- Mengimplementasikan encoding UTF-8 secara langsung sebagai pengganti fungsi
char::encode_utf8.
- Hasil peningkatan performa: parsing War and Peace menjadi 9% lebih cepat lagi.
Ringkasan GN⁺
- Artikel ini membagikan pengalaman meningkatkan performa serde_json, yang banyak digunakan di ekosistem Rust, sebesar 20%.
- Proses optimasi performa mencakup berbagai teknik dan pendekatan pemecahan masalah.
- Optimasi parsing Unicode dan string secara signifikan meningkatkan performa pemrosesan JSON.
- Artikel ini bermanfaat bagi pengembang yang tertarik pada optimasi performa, dan akan memberi dampak positif pada ekosistem Rust secara keseluruhan.
Belum ada komentar.