2011-11-08 16 views
15

Obecnie badam sposoby poprawy naszego obecnego mechanizmu serializacji w sieci C++, utrzymującego nasz istniejący protokół binarny. Pierwsze podejście polegało na zakodowaniu go za pomocą funkcji Boost.Asio z funkcją Boost.Serialisation z serializacją binarną. W każdym razie okazało się, że jest nieco wolniej (10%) niż nasza obecna ręczna implementacja. Ktoś ma rzeczywiste _real_work_ doświadczenie w korzystaniu z google protobuf razem z Boost.Asio?Boost.Asio z buforami protokołów google

Przeszukałem google dla próbek, ale był tylko w stanie przyjść się z poniższym przykładzie:

Boost Asio with google protocol buffers sample

czy ktoś zrobił to w każdym rzeczywistego projektu? Bardzo interesują mnie dane dotyczące wydajności, ponieważ musi to być dość szybko ...

+0

można dołączyć obraz przedstawiający postać? –

+0

Niestety nie mogę tego ujawnić :( – jvaz

Odpowiedz

22

Używamy boost :: asio i Protobuf dla złożonych protokołów o niskiej szybkości przesyłania komunikatów. W przypadku prostych protokołów o wysokiej szybkości przesyłania danych wykonujemy: :: asio i niestandardową serializację.

Biblioteka Protobuf C++ używa std :: string do reprezentowania pól łańcuchowych dla wiadomości, które deserializuje, co oznacza, że ​​przy każdym otrzymywanym komunikacie jest przeprowadzana bezpłatna alokacja magazynu przez Protobuf. To sprawia, że ​​protobuf nie jest bardzo wydajny w przypadku przesyłania wiadomości o wysokiej częstotliwości.

Używałbym wszędzie Protobufa, gdybym mógł. To wspaniałe narzędzie do tworzenia bogatych, złożonych, niezależnych od platformy, kompatybilnych z poprzednimi wersjami protokołów.

DODATEK

Ponieważ wydaje się, że ludzie czytają tę odpowiedź, powinienem dzielić się nauczyłem, że w C++ Protobuf można ponowne wykorzystanie obiektów wiadomość deserializacji zmniejszyć częstotliwość malloc podczas czytania .

See Optimization:

https://developers.google.com/protocol-buffers/docs/cpptutorial

+0

Dzięki Jamesowi za twój wkład, bardzo doceniany :) – jvaz

Powiązane problemy