imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 25.02.2007, 23:05     # 1
AcraL
Junior Member
 
Аватар для AcraL
 
Регистрация: 11.06.2004
Адрес: Israel
Пол: Male
Сообщения: 119

AcraL Известность не заставит себя ждатьAcraL Известность не заставит себя ждать
Question Получение больших сообщений по Tcp/Ip

Привет кто знает как помочь..
Проблемка: надо получить большие сообщения с очень большой частотой.

Попытка работать с event не учачно, я не успеваю считать сообщение приходить новое..
Читать в цикле тоже самое.

Использование бафера тоже не помогает, он переполняется...

Пытался увеличить бафер сокета не помогает...

Кто знает как помочь..

Зарание благодарю.
__________________
И дольше века длится день...
AcraL вне форума  
Старый 26.02.2007, 15:28     # 2
Павел
Guest
 
Сообщения: n/a

Исходники в студию! И спецификацию больших сообщений то же.
 
Старый 26.02.2007, 15:50     # 3
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Создать менеджер на 20(скажем) тредов, по получению event, сообщение уходит на свободный тред, там обрабатывается, тред его кладет в буфер, и сообщает менеджеру что он свободен. Таким макаром ты будеш точно знать нагрузку, время обработки одного сообщения и т.п.
Хотя звучит странновато, что обработка сообщения берет больше времени чем получение нового. 1 пакет в 100 байт на 100Мбит приходит за 8микросекунд - для гигагерцного проца это до фига времени.
crawler вне форума  
Старый 26.02.2007, 22:09     # 4
AcraL
Junior Member
 
Аватар для AcraL
 
Регистрация: 11.06.2004
Адрес: Israel
Пол: Male
Сообщения: 119

AcraL Известность не заставит себя ждатьAcraL Известность не заставит себя ждать
сообщения размером 32-64К
приходять каждые 1.5 мили

есть отдельный thread который читает и ложит в бафер.

вот тут и загвоздка как сделать этот thread.
__________________
И дольше века длится день...

Последний раз редактировалось AcraL; 26.02.2007 в 22:12.
AcraL вне форума  
Старый 27.02.2007, 01:35     # 5
PinGUIWin
Junior Member
 
Аватар для PinGUIWin
 
Регистрация: 08.11.2006
Адрес: Quantizer
Сообщения: 67

PinGUIWin Путь к славе только начался
Цитата:
Сообщение от AcraL Посмотреть сообщение
вот тут и загвоздка как сделать этот thread.
Прописать ему высокий приоритет и использовать спец. библиотеки (ассемблер) для копирования в выравненные буфера.
__________________
Matrix has you...
PinGUIWin вне форума  
Старый 27.02.2007, 23:59     # 6
AcraL
Junior Member
 
Аватар для AcraL
 
Регистрация: 11.06.2004
Адрес: Israel
Пол: Male
Сообщения: 119

AcraL Известность не заставит себя ждатьAcraL Известность не заставит себя ждать
есть 2 таких объекта
у них высокий приоритет.

вот только что там про:
Цитата:
Сообщение от PinGUIWin Посмотреть сообщение
использовать спец. библиотеки (ассемблер) для копирования в выравненные буфера.
где это найти
__________________
И дольше века длится день...
AcraL вне форума  
Старый 28.02.2007, 16:43     # 7
romanovi4
Newbie
 
Регистрация: 01.02.2004
Сообщения: 25

romanovi4 Путь к славе только начался
Я использую для таких целеи класс RingBuffer. У класса есть внутреннии Array, куда записываются данные. По приходу дат они записываются в этот Array, в отдельном Thread эти даты потом обрабатываются.
romanovi4 вне форума  
Старый 28.02.2007, 22:37     # 8
PinGUIWin
Junior Member
 
Аватар для PinGUIWin
 
Регистрация: 08.11.2006
Адрес: Quantizer
Сообщения: 67

PinGUIWin Путь к славе только начался
Цитата:
Сообщение от AcraL Посмотреть сообщение
где это найти
Есть два пути -- самому все написать на ассемблере. Поставить processor pack для компилятора. Но в том и другом случае нужно будет читать документацию на процессор.
Программа под intel платформу?
__________________
Matrix has you...
PinGUIWin вне форума  
Старый 28.02.2007, 23:05     # 9
AcraL
Junior Member
 
Аватар для AcraL
 
Регистрация: 11.06.2004
Адрес: Israel
Пол: Male
Сообщения: 119

AcraL Известность не заставит себя ждатьAcraL Известность не заставит себя ждать
Цитата:
Сообщение от romanovi4 Посмотреть сообщение
Я использую для таких целеи класс RingBuffer. У класса есть внутреннии Array, куда записываются данные. По приходу дат они записываются в этот Array, в отдельном Thread эти даты потом обрабатываются.
У меня примерно так все и работает...
Но иногда не успеваю все прочитывать с сокета...

добавлено через 1 минуту
Цитата:
Сообщение от PinGUIWin Посмотреть сообщение
Программа под intel платформу?
да, WinXp/2003
__________________
И дольше века длится день...
AcraL вне форума  
Старый 01.03.2007, 00:03     # 10
PinGUIWin
Junior Member
 
Аватар для PinGUIWin
 
Регистрация: 08.11.2006
Адрес: Quantizer
Сообщения: 67

PinGUIWin Путь к славе только начался
Если прога пишется на C/C++, то читайте описание на:
1. __declspec( align( # ) )
2. На SSE2 инструкции от intel: http://www.intel.com/products/proces...uals/index.htm
__________________
Matrix has you...
PinGUIWin вне форума  
Старый 01.03.2007, 03:31     # 11
Willow
Junior Member
 
Регистрация: 23.12.2003
Адрес: Киев
Сообщения: 118

Willow Реально крут(а)Willow Реально крут(а)Willow Реально крут(а)Willow Реально крут(а)
Цитата:
Сообщение от AcraL Посмотреть сообщение
У меня примерно так все и работает...
Но иногда не успеваю все прочитывать с сокета...
Я так понимаю что все сводится к быстрому копировнаию памяти. У Касперски Криса есть книга "Техника оптимизации программ. Эффективное исспользование памяти".

Если пишеш на Си то стоит исспользовать интеловский компилер. + у интела есть профилеровщик VTune.

А еще есть проект FastCode в котором пишутся быстрые эквиваленты библиотечным функциям. Проект ориентирован на Дельфи, но там в основном все на асме, можно безболезненоо скопировать.
Willow вне форума  
Старый 13.03.2007, 23:08     # 12
AcraL
Junior Member
 
Аватар для AcraL
 
Регистрация: 11.06.2004
Адрес: Israel
Пол: Male
Сообщения: 119

AcraL Известность не заставит себя ждатьAcraL Известность не заставит себя ждать
Цитата:
Сообщение от Willow Посмотреть сообщение
VTune
вещь конечно хорошая, но кто мне ее купит...
начальство жадное...

добавлено через 2 минуты
Цитата:
Сообщение от PinGUIWin Посмотреть сообщение
__declspec( align( # ) )
что это такое, не знаю
можешь рассказать, на сайте не смог найти по этому поводу ничего
__________________
И дольше века длится день...
AcraL вне форума  
Старый 13.03.2007, 23:56     # 13
PinGUIWin
Junior Member
 
Аватар для PinGUIWin
 
Регистрация: 08.11.2006
Адрес: Quantizer
Сообщения: 67

PinGUIWin Путь к славе только начался
__declspec( align( выравнивание ) ) тип имя_массива[размер];
Так можно задать выравненный массив.
Т.е. адрес массива (адрес нулевого элемента) будет кратен значению выравнивание. Это позволяет использовать команды с выравненными данными, а они часто являются более быстрыми командами процессора.
Например __declspec( align( 32 ) ) unsigned __int32 g_aFrameBuffer[1024 * 1024];
PS. выравнивание -- целое число, степень 2.
__________________
Matrix has you...
PinGUIWin вне форума  
Старый 14.03.2007, 01:10     # 14
AcraL
Junior Member
 
Аватар для AcraL
 
Регистрация: 11.06.2004
Адрес: Israel
Пол: Male
Сообщения: 119

AcraL Известность не заставит себя ждатьAcraL Известность не заставит себя ждать
т.е если я правильно понял, мне нужно опредилить мой баффер таким образом, и затем я могу с ним работать так же как я бы опредилил его
BYTE buff[1024]
__________________
И дольше века длится день...
AcraL вне форума  
Старый 14.03.2007, 21:43     # 15
PinGUIWin
Junior Member
 
Аватар для PinGUIWin
 
Регистрация: 08.11.2006
Адрес: Quantizer
Сообщения: 67

PinGUIWin Путь к славе только начался
Абсолютно верно, только советую учитывать особенность многих компиляторов -- они мало что знают про SSE/SSE2.
__________________
Matrix has you...
PinGUIWin вне форума  
Старый 15.03.2007, 12:38     # 16
AcraL
Junior Member
 
Аватар для AcraL
 
Регистрация: 11.06.2004
Адрес: Israel
Пол: Male
Сообщения: 119

AcraL Известность не заставит себя ждатьAcraL Известность не заставит себя ждать
ok
__________________
И дольше века длится день...
AcraL вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 20:36.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.