Надо решение для ускорение в работе в многопотоке C#
500 UAHЕсть шаблон под zennoposter, работаю в многопотоке 1500-2000 потоков, в шаблоне есть список юзерагентов 500 мегабайт весит - беру случайную строку, а так же список ящиков - беру с удалением строку из большого списка - тоже порядка 500 мегабайт. Так вот, в многопотоке на этих двух действиях идут огромные тупняки. Что было сделано
- разбивание одного шаблона на 50 шаблонов и 50 файлов (чтобы не с одним файлом работал, а каждые 30 потоков только со своими файлами)
- перенос в бд - innodb с построчной блокировкой
- перенос в ramdisk
ну вроде еще какие-то были попытки, типа работа в шарпе чисто с файлами и т.д. - самое действенное было - перенос в ram disk, но скорость улучшилась в раза три, не более. Так вот, надо действенное решение для этой задачи. Вроде можно в отдельную либу выносить или грузить список в память, но хз на сколько это будет действенно. Надо рабочее решение.
-

Надо смотреть подробнее алгоритм: как идут потоки, как идет расход памяти, как выделяются потоки и т. д. Как говорится: вопрос в деталях. Что можно сказать сразу, так это то, что самый большой расход быстродействия - запись файлов. Любое обращение к диску, особенно к винту, а не ssd-шке - а там все идет тупо в одну очередь и любое обращение на переразметку диска (для нового файла) - это жуткий расход времени и ресурсов, не говоря о том, что эти задачи имеют самый низкий приоритет. Можем пообщаться в личке, чтобы понять, смогу ли я чем-то помочь или нужен более опытный разработчик.
-
1500-2000
если у вас нету 1500-2000 ядер процесора, то такое количесство потоков только замедляет рассчеты -
Если вы берете емейлы подряд, то попробуйте НЕ удалять строку из списка - просто храните номер последней использованной строки.
-
Загрузіть файл в масив , розділіть масив на таку кількість елементів, скільки буде потоків, передайте в кожен поток по елементу.
P.S. незнаю чи це буде працювати в Zeno poster
-
Предлагаю посмотреть в сторону Akka.NET, в свое время внедрял данную технологию в приложениях связанное с торговлей на бирже, где нагрузка гораздо больше чем в вашем приложении. Не знаю деталей но если можно в вашем приложении можно разбить процесс на большое количество мелких операций - акка подойдет как никогда, легка в освоении, масштабируема.
-
Актуальные фриланс-проекты в категории C#
Доопрацювання 1С УТ 11 для ТСД Zebra (RDP): різні звукові сигнали при скануванні
1000 UAH
Конфигурация: 1С УТ 11 Адресный склад ТСД Zebra TC26 Работа через RDP Сканирование товаров выполняется в документах приемки, размещения, отбора и других складских операциях. Текущая проблема: Кладовщики работают через ТСД Zebra. При сканировании не всегда замечают сообщения на… C#, Базы данных и SQL ∙ 3 дня 2 часа назад ∙ 6 ставок |