![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Hohhi |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
Пусть дана коллекция List<PingElement>, где PingElement имеет адрес и порт. Ставится вопрос: Как найти оптимальное количество потоков для наискорейшего пингования всех элементов в списке?
|
|||
|
||||
RobinHoodPHD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 12.8.2007 Где: Русь Репутация: нет Всего: 2 |
ИМХО сложно назвать какую то цифру. Тут зависит многое от Вашей системы и от того, что конкретно делает поток.
Вот пара ссылок: Много на англ Много на англ2 Скорее всего Вам придется действовать методом тыка и смотреть - как зависит время выполнения задачи от количества потоков. К тому же думаю тут дело скорее не в скорости вычислений (перебор элементов массива - копейки), а в скорости сетевых соединений. Таким образом время работы программы будет значительно больше зависеть от того, по какому маршруту шел пакет. |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
Мне лично нравится 42 число...
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
Hohhi |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 25.2.2006 Где: Молдова Репутация: нет Всего: нет |
Вопрос не столь тривиален, как вам кажется при наличии переменном числе таких пар, возможны варианты, как не необходимости мультитрединга, так и его активного использования. +Неотвечающий айпи, отбрасывает все его пары, тем самым усложняя оценку
|
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
Он не кажется тривиальным, он кажется не имеющим ответа, т.к. зависит от кучи факторов, зависящих в свою очередь не только от конкретной сети, в которой будет работать, но и от состояния этой сети в момент проверки.
Там выше были 2 отличные ссылки с общей информацией о количестве потоков и идеи об их балансировке. Мне видятся 2 варианта: - (простой) сделать количество настраиваемым, пусть юзер подкручивает сам; в большинстве случаев дефолтные штук 30-40 никто и никогда менять не будет. - (навороченный) подстраивать количество потоков в рантайме, начав всё с тех же 30-40, смотря при этом на показатели сетевой нагрузки и нагрузку процессора, поставив ограничение на пинги разных портов одного адреса, выставляя парам с недоступными адресами низкие приоритеты, а быстро отвечающим - высокие (т.е. перейти от тупого списка к очереди с приоритетами). Я бы сделал просто. Это сообщение отредактировал(а) mihryak - 17.11.2010, 14:38 |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |