Tôi ghét phải nói với bạn điều này, nhưng không có câu trả lời đơn giản nào cho câu hỏi của bạn.
Hiệu suất của định dạng tuần tự phụ thuộc vào nhiều yếu tố. Trước hết, hiệu suất là thuộc tính của việc thực hiện nhiều hơn so với định dạng của chính nó. Những gì bạn thực sự muốn biết là làm thế nào để thực hiện JRuby cụ thể của từng định dạng thực hiện (hoặc có thể triển khai Java, nếu bạn chỉ gói chúng). Câu trả lời có thể cực kỳ khác với câu trả lời bằng các ngôn ngữ khác, như C++.
Ngoài ra, hiệu suất sẽ khác nhau tùy thuộc vào cách bạn sử dụng thư viện. API của nhiều thư viện đưa ra sự cân bằng giữa cách "dễ dàng, chậm" và cách "nhanh, khó". Khi tối ưu hóa, bạn sẽ muốn nghiên cứu cẩn thận tài liệu và tìm mã ví dụ từ các tác giả của thư viện để tìm hiểu cách nén hiệu suất tối đa.
Cuối cùng - và quan trọng nhất - hiệu suất cực kỳ khác nhau tùy thuộc vào dữ liệu bạn đang làm việc. Các định dạng và triển khai khác nhau tối ưu hóa cho các loại dữ liệu khác nhau. Ví dụ, dữ liệu chuỗi nặng sẽ thực hiện các đường dẫn mã rất khác nhau từ dữ liệu số nặng. Đối với mọi định dạng - ngay cả JSON và XML * - luôn có thể tìm thấy một trường hợp sử dụng khi chúng hoạt động tốt hơn tất cả các định dạng khác. Hãy cảnh giác với các tiêu chuẩn đến từ các tác giả của các thư viện vì chúng sẽ có xu hướng nhấn mạnh các trường hợp sử dụng thuận lợi cho chúng. Thật không may, nếu bạn thực sự muốn biết định dạng nào sẽ hoạt động tốt hơn cho bạn, cách duy nhất bạn sẽ tìm ra là viết hai phiên bản mã của bạn, một phiên bản sử dụng mỗi thư viện và so sánh chúng. Không có điểm chuẩn bên ngoài nào có thể cung cấp cho bạn câu trả lời thực sự.
(Tôi là tác giả của Protobuf v2 và Cap'n Proto, vì vậy tôi đã dành rất nhiều thời gian xem xét các tiêu chuẩn serialization và suy nghĩ về hiệu suất.)
* Just kidding về XML.
Nguồn
2016-07-04 20:58:47
Không phải là một câu hỏi tốt cho stackoverflow nhưng thanh toán bài đăng này: http://www.sammur.com/?p=36 – Nicholas
cảm ơn rất nhiều Nicholas :) –