Следует иметь в виду, что скорость передачи 1000 Мбит / сек c - это теоретический максимум, а не скорость, которую вы часто получаете на практике. Измеренная скорость, вероятно, будет несколько ниже .
Вот некоторые причины, по которым измеренная скорость может быть ниже теоретической (в произвольном порядке):
- Накладные расходы из-за заголовков пакетов TCP и Ethe rnet заголовков кадров
- Отброшенных пакетов (которые вызывают кратковременную остановку потока TCP, чтобы можно было повторно отправить отброшенные пакеты)
- Ограничения пропускной способности ЦП или памяти на отправляющем или принимающем оборудовании
- TCP медленный старт Функция, которая снижает скорость передачи в начале сеанса
- Другая сеть трафик c, конкурирующий за ту же полосу пропускания
- Неоптимальные реализации кода отправки или получения (например, возможно, принимающая программа тратит время на запись полученных данных на диск, задерживая свой следующий вызов на
recv()
, позволяя ей TCP-приемный буфер для переполнения) - Сниженная скорость передачи из-за предельного Ethe rnet -кабеля или чрезмерной длины кабеля
В качестве примечания: если вы хотите уменьшить время, необходимое для передачи изображения, вы можете изучить возможность сжатия данных перед их отправкой (например, путем преобразования в .jpg на отправляющей стороне). Если вы можете значительно уменьшить объем отправляемых данных, вы соответственно можете сократить время передачи. (вы можете еще больше ускорить процесс, выполнив сжатие в отдельном потоке на стороне сервера, чтобы сжатие изображения # (N + 1) могло происходить параллельно с передачей изображения #N)