Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимизация сокетов 
:(
    Опции темы
ilyalyu
Дата 26.12.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 25.10.2006

Репутация: нет
Всего: нет



Задача - передать через сокет 100 блоков по 10 байт. Возможны два способа. Вопрос - какой более эффективный?

Способо 1:

Послать все по отдельности. Вот приблизительный код:

Код

for i := 1 to 100 do socket.sendln(Block_i, 10);


Способо 2:

Сначала скопировать все данные в буфер, а затем один раз послать буфер через сокет. Приблизительный код:

Код

Ptr := @Buffer;
for i := 1 to 100 do begin
  move(Ptr, @Block_i, 10);
  inc(Ptr, 10);
  move(Ptr, #13#10, 2);
  inc(Ptr, 2);
end;
socket.sendln(Buffer, 100*12);


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

Во втором варианте все данные будут гарантированно переданы одним пакетом, но текст программы увеличивается многократно.

Кроме того, насколько я понимаю, сокет может и сам буферизировать отправляемые данные. В этом случае первый вариант также отправит один большой пакет, а не сто маленьких.
PM MAIL   Вверх
NoeR
Дата 2.1.2007, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 233
Регистрация: 6.2.2005

Репутация: нет
Всего: нет



Первый лучше, так как действительно будет отправлено одним пакетом.
--------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<<
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.