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

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

21.05.2011, 16:22. Показов 1660. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru