Я попытался отправить/получить данные с помощью TcpClient. Я сделал два эксперимента и нашел что-то интересное.Создает ли TcpClient много накладных расходов?
Я настраиваю TcpListener на сервер в Японии и TcpClient в Великобритании. Я продолжал отправлять 500 байтов в TcpListener, и когда TcpListener отправляет 10 КБ обратно в TcpClient. Я сохранял этот цикл отправки/получения 500 раз в каждом эксперименте.
Эксперимент 1:
В каждой отправить/получить петлю, создать совершенно новый TcpClient (время тикает от только до создания) и отправить/получить
Эксперимент 2:
Для все циклы, у меня есть только один TcpClient, и он поддерживает соединение с TcpListener и делает send/receive 500 раз.
Результат:
Среднее значение стоимости времени в течение одного цикла:
E1: 1,8 секунды, Е2: 0,49 сек.
Я очень удивлен этим результатом. Поэтому сохранение связи для постоянной отправки/получения может сэкономить много времени ??? почти 2/3 времени.
Это правда ???
Благодаря
==== ==== нового
тарелочки @ Джон, @dbemerlin, спасибо за ответ. Я догадался, что рукопожатия Tcp занимают некоторое время.
Так что я сделал эксперимент 3.
I настроить HttpListener в качестве сервера и использовать WebClient для отправки/приема, размеры данных точно так же. И каждый раз, когда я использовал новый WebClient для отправки/получения между Великобританией и Японией.
Результат: 0,86 (среднее от 500 раз, т. Е. Отправление/получение).
Я предполагаю, что сами WebClient/HttpLisener являются Tcp, правильно? Как они могут быть быстрее, чем сырые TcpClient/TcpListener в моих экспериментах?
Еще раз спасибо
Либо ваш веб-клиент оставляет соединение открытым и/или использует конвейерную обработку, либо классы TcpClient/TcpListener работают медленно и не используются для классов HttpListener/WebClient, но это маловероятно, так как Microsoft (против всех слухов) делает неплохую работу , Используйте Wireshark, чтобы проверить, что на самом деле происходит между Великобританией и Японией. Кроме того: сетевые соединения (особенно далеко) склонны к разной скорости соединения в зависимости от времени суток, поэтому убедитесь, что вы повторите предыдущие эксперименты. – dbemerlin