Tài liệu

Benchmark tuần tự hóa

Thời gian đọc 3 phút
Trên trang này

Nalix có một engine tuần tự hóa nhị phân tùy chỉnh, LiteSerializer, được thiết kế để đạt thông lượng tối đa và cấp phát tối thiểu trong việc truyền tải mạng hiệu năng cao.

Hiệu năng LiteSerializer

Micro-benchmark chi tiết các thao tác tuần tự hóa tiêu chuẩn, bao gồm struct unmanaged, formatter tùy chỉnh, điền span nội tuyến và phân giải formatter.

Phương thứcMeanErrorStdDevP95Gen0Gen1Gen2Cấp phát
Serialize_Unmanaged_Small8.4605 ns0.3905 ns0.5214 ns9.1123 ns0.0015--56 B
Serialize_Unmanaged_Large49.7401 ns1.3714 ns1.7831 ns52.4651 ns0.0144--536 B
Deserialize_Unmanaged_Small3.3755 ns0.0330 ns0.0441 ns3.4550 ns---0 B
Deserialize_Unmanaged_Large22.0984 ns0.2677 ns0.3083 ns22.6873 ns---0 B
Serialize_Formatter58.3652 ns2.3481 ns2.6099 ns60.5600 ns0.0041--152 B
Deserialize_Formatter60.4312 ns0.7158 ns0.9556 ns62.0313 ns0.0079--296 B
Fill_IntoSpan_Small1.0629 ns0.0188 ns0.0245 ns1.1034 ns---0 B
Fill_IntoSpan_Large5.1200 ns0.0450 ns0.0585 ns5.2316 ns---0 B
Resolve_Formatter0.9009 ns0.0128 ns0.0162 ns0.9219 ns---0 B

Vì sao tuần tự hóa của Nalix?

  • Giải tuần tự hóa không cấp phát: Giải tuần tự hóa các cấu trúc unmanaged (Deserialize_Unmanaged_Small và Deserialize_Unmanaged_Large) hoàn toàn không cấp phát (0 B) và chạy trong khoảng từ một chữ số đến hai chữ số thập phân nano giây.
  • Đường nhanh điền span: Sao chép dữ liệu nguyên thủy trực tiếp vào span đích (Fill_IntoSpan_Small) mất khoảng 1 nano giây (~1.06 ns) với chi phí gần như bằng không.
  • Sao chép bộ nhớ trực tiếp: Với các struct unmanaged, LiteSerializer dùng phép sao chép khối bộ nhớ mức thấp qua lớp Unsafe, tạo ra các lệnh CPU chạy ở giới hạn phần cứng.
  • Inlining tích cực: Các phương thức chính trên đường tuần tự hóa được trang trí bằng thuộc tính biên dịch tích cực, cho phép RyuJIT inline và loại bỏ chi phí gọi phương thức.