2009-03-24 9 views
7

Buduję rozproszoną aplikację C++, która musi wykonać szereg serializacji i deserializacji danych przechowywanych w standardowych kontenerach.Wydajność szeregowania w języku C++

Obecnie przyjęto metodę Boost.serialization. Jednak działa strasznie. Nasze drzewo B również używa Boost.serialization do przechowywania danych par klucz-wartość, jednak jeśli zmienimy Boost.serialziation na memcpy, prędkość dostępu zostanie poprawiona 10 razy lub więcej. Biorąc pod uwagę obecną rozproszoną platformę, potrzebna jest tak duża wymiana danych, dlatego wymagane jest również łatwe programowanie i wysoka wydajność. Wiem, że bufor protokołu mógłby być również wykorzystywany jako mechanizm szeregowania, jednak nie jestem pewien co do porównania wydajności między Boost.serialization i protokołem buforowym, innym problemem jest to, czy istnieją lepsze rozwiązania dla dostawców wyższej wydajności, zbliżone do memcpy?

Dzięki

+0

o ile wiem, zwiększenie serializacji ma różne archiwa. używasz archiwum binarnego? –

+0

Czy zmieniasz numerację na dysk lub po prostu przesyłasz dane przez kabel? –

+0

Wyświetl porównanie graficzne tutaj:
http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking – lsalamon

Odpowiedz

1

Ktoś zadał bardzo podobne pytanie: C++ Serialization Performance

wygląda jak bufory protokół to dobra droga, chociaż nie znając wymagania aplikacjach, trudno polecić żadnej konkretnej biblioteki lub technika.