| imho.ws |
![]() |
|
|
|
# 1 |
|
Junior Member
Регистрация: 11.06.2004
Адрес: Israel
Пол: Male
Сообщения: 119
![]() ![]() |
Привет кто знает как помочь..
Проблемка: надо получить большие сообщения с очень большой частотой. Попытка работать с event не учачно, я не успеваю считать сообщение приходить новое.. Читать в цикле тоже самое. Использование бафера тоже не помогает, он переполняется... Пытался увеличить бафер сокета не помогает... Кто знает как помочь.. Зарание благодарю.
__________________
И дольше века длится день... |
|
|
|
|
# 3 |
|
Full Member
Регистрация: 11.12.2002
Сообщения: 864
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Создать менеджер на 20(скажем) тредов, по получению event, сообщение уходит на свободный тред, там обрабатывается, тред его кладет в буфер, и сообщает менеджеру что он свободен. Таким макаром ты будеш точно знать нагрузку, время обработки одного сообщения и т.п.
Хотя звучит странновато, что обработка сообщения берет больше времени чем получение нового. 1 пакет в 100 байт на 100Мбит приходит за 8микросекунд - для гигагерцного проца это до фига времени. |
|
|
|
|
# 4 |
|
Junior Member
Регистрация: 11.06.2004
Адрес: Israel
Пол: Male
Сообщения: 119
![]() ![]() |
сообщения размером 32-64К
приходять каждые 1.5 мили есть отдельный thread который читает и ложит в бафер. вот тут и загвоздка как сделать этот thread.
__________________
И дольше века длится день... Последний раз редактировалось AcraL; 26.02.2007 в 22:12. |
|
|
|
|
# 8 |
|
Junior Member
Регистрация: 08.11.2006
Адрес: Quantizer
Сообщения: 67
![]() |
Есть два пути -- самому все написать на ассемблере. Поставить processor pack для компилятора. Но в том и другом случае нужно будет читать документацию на процессор.
Программа под intel платформу?
__________________
Matrix has you... |
|
|
|
|
# 9 | |
|
Junior Member
Регистрация: 11.06.2004
Адрес: Israel
Пол: Male
Сообщения: 119
![]() ![]() |
Цитата:
Но иногда не успеваю все прочитывать с сокета... добавлено через 1 минуту да, WinXp/2003
__________________
И дольше века длится день... |
|
|
|
|
|
# 10 |
|
Junior Member
Регистрация: 08.11.2006
Адрес: Quantizer
Сообщения: 67
![]() |
Если прога пишется на C/C++, то читайте описание на:
1. __declspec( align( # ) ) 2. На SSE2 инструкции от intel: http://www.intel.com/products/proces...uals/index.htm
__________________
Matrix has you... |
|
|
|
|
# 11 | |
|
Junior Member
Регистрация: 23.12.2003
Адрес: Киев
Сообщения: 118
![]() ![]() ![]() ![]() |
Цитата:
Если пишеш на Си то стоит исспользовать интеловский компилер. + у интела есть профилеровщик VTune. А еще есть проект FastCode в котором пишутся быстрые эквиваленты библиотечным функциям. Проект ориентирован на Дельфи, но там в основном все на асме, можно безболезненоо скопировать. |
|
|
|
|
|
# 12 |
|
Junior Member
Регистрация: 11.06.2004
Адрес: Israel
Пол: Male
Сообщения: 119
![]() ![]() |
вещь конечно хорошая, но кто мне ее купит...
начальство жадное... добавлено через 2 минуты что это такое, не знаю можешь рассказать, на сайте не смог найти по этому поводу ничего
__________________
И дольше века длится день... |
|
|
|
|
# 13 |
|
Junior Member
Регистрация: 08.11.2006
Адрес: Quantizer
Сообщения: 67
![]() |
__declspec( align( выравнивание ) ) тип имя_массива[размер];
Так можно задать выравненный массив. Т.е. адрес массива (адрес нулевого элемента) будет кратен значению выравнивание. Это позволяет использовать команды с выравненными данными, а они часто являются более быстрыми командами процессора. Например __declspec( align( 32 ) ) unsigned __int32 g_aFrameBuffer[1024 * 1024]; PS. выравнивание -- целое число, степень 2.
__________________
Matrix has you... |
|
|