Оптимизировать данные байта сокета - PullRequest
2 голосов
/ 29 января 2012

Я пишу простой класс ввода / вывода для использования в многопользовательской игре. На самом деле все в порядке, но я пытаюсь найти способ оптимизировать его как по общей производительности, так и по размеру пакетов. Класс здесь

Кроме того, несколько дней назад я нашел этот класс и увидел, что он работает напрямую с битами. Делать это лучше для моего класса?

Спасибо и извините за плохой английский.

Edit: Я использую TCP, и макет пакета представляет собой заголовок (один байт), за которым следуют данные энтропии (String, Int16, Int32, Int64, байтовый и байтовый массив). Максимальный размер пакета составляет 4 КБ.

1 Ответ

0 голосов
/ 03 февраля 2012

и макетом пакета является заголовок

  • (один байт)
  • String
  • Int16
  • Int32
  • Int64
  • байт
  • байтовый массив

Этот пакет нельзя оптимизировать больше, если вы не можете уменьшить размер любого из полей.

4 КБ данных - это примерно 32 Кбит / с, что означает, что вы можете передавать пакет примерно 300 клиентам в секунду при соединении 10 Мбит / с.Вы хотите сказать, что вам нужно обрабатывать больше клиентов в секунду?

Лучший способ оптимизировать ваше приложение - это использовать пул буферов вместо создания нового буфера для каждого пакета для отправки.

И как всегда: не оптимизируйте, пока вам это действительно не нужно, поскольку вам, вероятно, придется пожертвовать удобочитаемостью.

...