Има ли оптимален размер за буфера, който подавам към async_receive
или async_receive_from
съответно за tcp и udp? Мислех си, че може да е 8192 за tcp и 1472 за udp.
boost asio async_receive размер на буфера
Отговори (1)
AFAIK, Не, трябва да разберете изискването за пропускателна способност за вашето приложение и да го зададете по подходящ начин.
person
Nim
schedule
25.10.2011
Какво е предимството на големия буфер - размерите, които цитирах, не са ли на някакво ниво на сокет? Впечатлението ми беше, че ASIO просто ще запълни размера на буфера ми от множество приемания, но това всъщност не помага/променя пропускателната способност.
- person David; 25.10.2011
Можете да зададете буферите rx и tx на сокета, обикновено те трябва да бъдат настроени на доста голямо количество, за да се предотвратят падания. Размерът на буфера, който предоставяте на asio, не зависи от това. Да кажем, че вашето приложение изпраща сериализиран буфер от 2K през UDP, това ще бъде фрагментирано и изпратено, ако предоставите само буфера от 1,5K на asio, ще получите само толкова много данни и ще трябва да направите друго четене, за да получите Почивка. Както можете да видите, това е много зависимо от приложението.
- person Nim; 25.10.2011
Мисля, че първото ти изречение е може би това, което търсех. Не се притеснявам от използването на asio (моята обвивка непрекъснато свързва async_receive) - притеснявам се за производителността и оптималното използване на паметта на ниво сокет. Ако някакъв вътрешен tcp буфер е 8k, тогава даването на asio на 32k буфер би било безсмислено.
- person David; 25.10.2011
TBH, първо трябва да потвърдите настройките по подразбиране, те може вече да са достатъчно големи и може да не е необходимо да ги задавате ръчно в приложението си.
- person Nim; 25.10.2011