2009-03-24 39 views
7

Tôi đang xây dựng một ứng dụng C++ phân tán cần thực hiện rất nhiều serialization và deserialization dữ liệu được lưu trữ trong std container.Hiệu suất tuần tự hóa C++

Hiện tại, Boost.serialization được chấp nhận. Tuy nhiên, nó thực hiện khủng khiếp. B-tree của chúng tôi cũng sử dụng Boost.serialization để lưu trữ dữ liệu cặp khóa-giá trị, tuy nhiên, nếu chúng ta thay đổi Boost.serialziation thành memcpy, tốc độ truy cập sẽ được cải thiện gấp 10 lần. Kể từ khi đưa ra nền tảng phân tán hiện tại, rất nhiều trao đổi dữ liệu là cần thiết, do đó lập trình dễ dàng cũng được yêu cầu cùng với hiệu suất cao. Tôi biết bộ đệm giao thức cũng có thể được sử dụng như một cơ chế tuần tự hóa, tuy nhiên, tôi không chắc chắn về sự so sánh hiệu suất giữa Boost.serialization và bộ đệm giao thức, một vấn đề khác là, có tồn tại bất kỳ giải pháp nào tốt hơn cho nhà cung cấp hiệu năng cao hơn gần memcpy không?

Cảm ơn

+0

theo như tôi biết, việc tăng tuần tự hóa có lưu trữ khác nhau. Bạn có sử dụng kho lưu trữ nhị phân không? –

+0

Bạn có đang tuần tự hóa đĩa hay chỉ gửi dữ liệu qua dây? –

+0

Xem so sánh đồ họa tại đây:
http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking – lsalamon

Trả lời

1

Có người hỏi một câu hỏi rất giống nhau: C++ Serialization Performance

Dường như bộ đệm giao thức là một cách tốt để đi, mặc dù không biết yêu cầu các ứng dụng của bạn, rất khó để đề nghị bất kỳ thư viện cụ thể hoặc kỹ thuật.

Các vấn đề liên quan