Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748

Слишком большая загрузка проца и оперативы

21.05.2011, 16:22. Показов 1681. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую.
Такая ситуация. Есть чат. Коннектится к SQL Server, получает оттсуда сообщенияи показывает их в WebBrowser. С остальным проблемм нет, есть только одна проблема... Для забора новых сообщений идет примерно такой код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        rs.open 'sp_GetMessages '' & UKey & ''', cn, adOpenDynamic, adLockReadOnly
        Do Until rs.EOF
            Att = Att & '
<FONT STYLE=' & Chr(34) & 'font-family:Times New Roman;font-size:10pt;color:#CFCFFF;font-weight:900;' & Chr(34) & '>[' & Format(rs('DT'), 'hh:mm:ss') & '] '
            Att = Att & '<A HREF=' & Chr(34) & 'http://usera.com/a.asp?a=' & rs('Nick') & '/' & Chr(34) & '  STYLE='font-weight:900px;font-size:10pt;color:CFCFFF;'>' & rs('Nick') & ': '
            Att = Att & '<FONT STYLE=' & Chr(34) & 'font-family:' & rs('Font') & ';font-size:' & rs('Size') & 'pt;color:' & GetColor(rs('Color')) & ';' & Chr(34) & '>'
            Att = Att & MakePL(rs('Message')) & '' & vbCrLf
            rs.MoveNext
        Loop
        rs.Close
        DIV.innerHTML = DIV.innerHTML & Att
        If Left(DIV.innerHTML, 4) = '
' Then DIV.innerHTML = Mid(DIV.innerHTML, 5)
        Doc.parentWindow.scrollTo 1, 99999999
, где
Visual Basic
1
2
3
    Set Doc = WB.Document
    Set DIVs = Doc.All.tags('DIV')
    Set DIV = DIVs.Item(0, 0)
Когда дело доходит приблизительно до 100 соощений, то значительно нагружается на ЦП и объемой оперативы, сжираемой программой, увеличивается приблизительно с 14 до 17 МБ.
Какие есмть предложения?
Остальное все проверял - проблема именно в сообщениях. Из-за них памят жрется, точнее из-за того, что они добавляются в WebBrowser.
Какие есть выходы, кроме как удалять старые сообщения?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.05.2011, 16:22
Ответы с готовыми решениями:

Опишите, пожалуйста, детально разгон проца и оперативы
процессор amd athlon 64 x2 4000+ 2.1 ГГц, оператива ddr2 2Gb 400Mhz + 1Gb 333Mhz, мать ASRock N68C-S UCC. И возможно ли на этом...

Firefox жрет слишком много оперативы
Плиз выручите, в чем трабл, все было гуд, ближе к вечеру что то сделать через мазилу нереально, виснет, глючит. Ничего не ставил не удалял,...

Константа слишком большая
В общем то вот, очень много таких ошибок, как исправить эту беду ??

12
snov
22.05.2011, 08:30
А зачем вообще WebBrowser? Насколько я заметил там кроме ссылок ничего и нет такого чтобы его юзить. попробуй переделать под RichTextBox
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
22.05.2011, 15:32  [ТС]
Всё не так просто
1) Ссылки (RTF их не держит, если не ошибаюсь)
2) Анимированные картинки
0
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
22.05.2011, 16:41
у тебя раздувается переменная Att
попробуй после каждой строки добавлять в HTML:
Visual Basic
1
2
3
4
5
6
7
8
    Do Until rs.EOF
        Att=''      
        Att = Att & '<BR...'
        ....
        DIV.innerHTML = DIV.innerHTML & Att
        rs.MoveNext    
    Loop    
    rs.Close
0
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
22.05.2011, 16:46  [ТС]
Кудаж она раздувается то?
Ну кладется в нее за один проход по 500 байт, затем она умирает при выходе из процедуры.
Дело ней в ней, а именно в экслорере.
0
Comanche
22.05.2011, 20:18
Не совсем уверен, что дело именно в этом, но по моим наблюдениям, DOM - тормозная штука, и код типа 'DIV.innerHTML = DIV.innerHTML & Att' занимает изрядно времени, как и все манипуляции с innerHtml, outerHtml и т.д.

Имхо, лучше готовить всё в строковой переменной, а затем _единожды_ делать WebBrowser1.Document.all.outerHtml = stBuff. Ну или сохранять stBuff в файл, а затем - Navigate.
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
22.05.2011, 20:31  [ТС]
Navigate будет гадко щелкать
а штука эта тормозная очень, согласен.
Ок, попробую через OuterHTML.
0
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
23.05.2011, 01:26  [ТС]
2Comanche: Не, не прокатило... Может че не так делаю...
Сначала пробовал так:
WB.Document.All.outerHTML = 'messages_code'
получем Object doesn't support this property or method
Потом сделал так:
Dim Doc
Set Doc= WB.Document
Doc.All.outerHTML = 'messages_code'

Через Navigate пробовал - не катит - прыгает постоянно, т.к. сообщения добавляюются вниз. Еслиб вверх добавлялись, то прокатило бы.... но это неудобно.
0
Messir
23.05.2011, 09:04
Дааа...
Вообще-то от идеи таких чатов давно отказались в пользу постоянно открытого потока.

А что касается outerHTML'a, то у All его, естественно, нету. Нужно писать что-то типа document.body.outerHTML = '<body>' & buff & '</body>'
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
23.05.2011, 11:08  [ТС]
>Вообще-то от идеи таких чатов давно отказались в пользу постоянно открытого потока.
Чат для локальной сетки. Постоянное подключение к MS SQL. Страница не обновляется постоянно, а добавляются только новые сообщения. Хотя да, теперь уже можно сказать обновляется - старые сообщения убиваются. Вот выход из этого и ищу.

> А что касается outerHTML'a, то у All его, естественно, нету. Нужно писать что-то типа document.body.outerHTML = '<body>' & buff & '</body>'
Мда, туплю. В MSDN нашел вот такой пример... Вроде работает. Домой приду - попробую.
Visual Basic
1
2
3
4
5
Dim doc As Object
Set doc = WebBrowser1.Document
If TypeName(doc) = 'HTMLDocument' Then
   MsgBox doc.body.outerhtml
end if
0
Comanche
23.05.2011, 13:10
2Alexey:
Пардон, подвёл тебя с 'WebBrowser1.Document.all.outerHtml' - писАл на память...
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
26.05.2011, 00:25  [ТС]
короче говоря не помогает...
Даже с Doc.Body.InnerHTML. с Outer ошибку выдает.
Да и как я понял, не в этом дело. ПРи добавлении одног осообщения сразу колво оперативы, занмиаемой прогоарммй, возрастает на 60-100 КБ. Не знаю как с этим бороться... Если, к примеру, взять чат.ру. Там хоть сутки канал не закрывай - эксплорер тормозить не будет и много памяти не жрет. Как так получается - не понимаю...
0
Comanche
26.05.2011, 17:22
Попробуй не помещать контрол на форму (и отключи его в Tools/Components), а в Tools/References подруби MS Internet Controls к проекту, и дальше - Set MyIE = New InternetExplorer и т.д.

Это я к тому, что м.б. именно КОНТРОЛ WebBrowser - глючен, и всё дело в нём. Это было бы очень похоже на мелгомягких ) Например, контрол ListView - просто глюк на глюке, и сколько его до ума не доводи - лучше чем CreateWindowEx(...SysListView32...) не сделаешь.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.05.2011, 17:22
Помогаю со студенческими работами здесь

Слишком большая нагрузка на ЦП
Дело в том,что после установки одной игры с торрента,у меня появился процесс Realtek который `жрал`40-60% цп и даже после его закрытия - он...

Константа слишком большая
masm model small .stack 1000h .data x dw 0 y dw 0 z dw 0 F dw ?

Слишком большая база
Я впервые создал базу данных в ACCES2000. Размер получился более 1,5 Мб. Другие готовые подобные базы в несколько раз меньше. Не пойму...

Слишком большая длина записи
Добрый день, При попытке добавить новые поля в действующую базу, выдает ошибку &quot;Слишком большая длина записи&quot; и не позволяет...

Слишком большая длина записи
Добрый день. Не нашла ничего конкретного по этой теме. Есть проблема: выгружая определенную запись со всеми атрибутами из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru