Для проверки пропускной способности я изменил пример чата Bluetooth.
Я предоставил кнопку «Отправить» в пользовательском интерфейсе, которая отправляет некоторые предопределенные номера. байтов к сокету сервера и ожидает подтверждения
ServerSocket ожидает какую-то строку и, как только получает данные, отвечает, отправляя подтверждение.
Здесь пропускную способность для этого соединения я рассчитал следующим образом.
Я записываю время начала при отправке данных.
ПОЛУЧЕНИЕ подтверждения Я записываю время окончания.
Таким образом, пропускная способность будет (размер отправленных данных + размер полученного подтверждения) / затраченное время.
Результаты:
отправка данных (КБ) ------------------- Пропускная способность (килобит в секунду)
1KB ~200Kbps
5KB ~560Kbps
10KB ~688Kbps
50KB ~512Kbps
По некоторым данным, полученным из приложения. Поведение таково, что при низких данных, таких как 1 КБ или 5 КБ, пропускная способность меньше. Увеличивается примерно до 40 КБ или снова после 50 КБ или около того начинает уменьшаться. Я вижу, что на принимающей стороне происходит сборка мусора, это увеличивает задержку.
Я хочу знать, правильное ли это поведение. почему при меньших объемах данных, таких как 1 КБ или 5 КБ, пропускная способность уменьшается, а затем увеличивается Какие факты я могу рассмотреть, которые могут добавить к задержке. Теперь пропускная способность рассчитывается, когда отправитель получает подтверждение от получателя (его полный расчет туда-обратно). Могу ли я сделать это за одну поездку, как при отправке данных, и после получения всего я вычисляю пропускную способность в приемнике. Я попробовал это, но в двух телефонах была разница в миллисекундах, что давало мне неправильные результаты, иногда отрицательное значение.
Пожалуйста, помогите мне понять правильное поведение.