Уменьшить загрузку ЦП

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Alexandrius
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 01.11.2009 (Вс) 14:09
Откуда: Украина

Уменьшить загрузку ЦП

Сообщение Alexandrius » 27.07.2010 (Вт) 1:31

Программа содержит вложенные циклы, в ходе которых считывается и и обрабатывается большой объём данных. Полностью загружает процессор. Да и памяти около 500 мб жрёт. Как можно уменьшить нагрузку на проц?
Visual Basic 2008

Alexandrius
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 01.11.2009 (Вс) 14:09
Откуда: Украина

Re: Уменьшить загрузку ЦП

Сообщение Alexandrius » 27.07.2010 (Вт) 1:54

И ещё вопрос. Вылазит предупреждение: "Обнаружено событие ContextSwitchDeadlock
Message CLR не удалось перейти из COM-контекста 0x1538dd0 в COM-контекст 0x1538f40
за 60 секунд. Наиболее вероятно, что поток, владеющий контекстомапартаментом назначения,
находится в режиме ожидания или выполнения очень длительной операции без прокачки
сообщений Windows. Обычно эта ситуация отрицательно влияет на производительность и
даже может привести к зависанию приложения или чрезмерному расходованию памяти.
Чтобы избежать этой проблемы, все потоки однопоточного апартамента (STA) должны
использовать примитивы ожидания для прокачки (например, CoWaitForMultipleHandles)
и периодически прокачивать сообщения во время длительных операций". Как это лучше сделать во время прохождения цикла?
Visual Basic 2008

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Уменьшить загрузку ЦП

Сообщение Viper » 27.07.2010 (Вт) 4:56

Телепаты все в отпусках и отгулах.
Весь мир матрица, а мы в нем потоки байтов!

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Уменьшить загрузку ЦП

Сообщение 1Steps » 27.07.2010 (Вт) 6:26

Как можно уменьшить нагрузку на проц?
Очень просто. Нужно переписать алгоритм программы.
Поищи в МСДН-е System.Threading.Thread. Читай в одном потоке, обрабатывай в другом и тд.
Удалена за ненадобностью.

Alexandrius
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 01.11.2009 (Вс) 14:09
Откуда: Украина

Re: Уменьшить загрузку ЦП

Сообщение Alexandrius » 27.07.2010 (Вт) 14:49

По второму вопросу нашёл
Код: Выделить всё
Application.DoEvents()
А насчёт многопоточности буду думать... Спасибо.
Visual Basic 2008


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList