Вопросы оптимизации

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sandr0
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 65
Зарегистрирован: 17.11.2004 (Ср) 16:26
Откуда: Rostov-on-Don

Вопросы оптимизации

Сообщение Sandr0 » 31.05.2006 (Ср) 15:07

Требовалась прога по ведению логов запуска и останова процессов.
Сделал на скорую руку, но встал вопрос что при постоянном контроле (таймер) програ отжирает ресурсов почти 80%.
Лог писал в MDB, т.к. из него удобней извлекать отчеты.
Может у кого есть предложения по оптимизации? уж очень не устраивать большая загрузка проца и увеличение интервала таймер.

зы. прога шибко сырая, т.ч. прошу без язвительности
Вложения
Вариант2.rar
(68.85 Кб) Скачиваний: 55

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.05.2006 (Ср) 15:17

Этот код бесполезно оптимизировать.
Если тебе так нужна скорость, используй другой подход.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.05.2006 (Ср) 15:18

И, разумеется, это последнее предупреждение касательно 120 постингов.
Lasciate ogni speranza, voi ch'entrate.

cooler
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 90
Зарегистрирован: 09.08.2004 (Пн) 4:58
Откуда: Che sity

Сообщение cooler » 31.05.2006 (Ср) 18:02

думаю надо делать что-то типа перехвата вызова функции CreateProcess или типа того
Windows написанна с применением искусственного интеллекта. И как любое разумное существо старается работать как можно меньше :))

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 31.05.2006 (Ср) 18:36

думаю надо делать что-то типа перехвата вызова функции CreateProcess или типа того
Перехватывать нужно Zw(Nt)CreateProcess.
А я все практикую лечение травами...

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 31.05.2006 (Ср) 18:46

В ядре :) И не забудь ZwTerminateProcess - в конечном итоге ExitProcess приводит к нему
Изображение

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 31.05.2006 (Ср) 23:56

Вообще-то, все уже сделано до нас - Event Viewer \ Security. Поставить фильтр на создание / уничтожение процесса - и все, собственно. Более того, чтобы получить данные за последнюю, скажем, неделю, программе необязательно быть всю эту неделю запущенной.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 01.06.2006 (Чт) 0:00

Блин, пора писать статью про перехват API в юзермоде, правда на чистом VB это проблематично будет...

<- 1111
А я все практикую лечение травами...

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 01.06.2006 (Чт) 1:25

Хехе.. интересные вы все такие +_+
Я счас чем то похожим занимаюсь..

Код: Выделить всё
set wmi = getobject("winmgmts:")
set oQ = wmi.ExecNotificationQuery("select * from __InstanceOperationEvent within 3 where TargetInstance ISA 'Win32_Process'")
set oE = oQ.NextEvent
s0 = oE.TargetInstance.Name
If oE.path_.Class = "__InstanceDeletionEvent" then
s0 = "Программа " & s0 & " закрылась"
elseif oE.path_.Class = "__InstanceCreationEvent" then
s0 = "Программа " & s0 & " запустилась"
end if


Ну, приблизительно так.. И все! Перехватчики апи, млин.. Все вам поперехватывать хочется +_+

ЗЫ. Проц почти не загружен. У меня показывает 0%.
ЗЗЫ. Это не надо совать в таймер!!! +_+
Последний раз редактировалось AjaxVS 01.06.2006 (Чт) 1:32, всего редактировалось 2 раз(а).

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 01.06.2006 (Чт) 1:31

Перехватчики апи, млин
Мне не нравится твой тон, AjaxVS. Видишь ли, за последнее время на форуме проскальзывало не мало вопросов, решение которых так или иначе связано с перехватом. И этот в том числе.
А я все практикую лечение травами...

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 01.06.2006 (Чт) 1:34

Перехват АПИ в данном случае - самый плохой вариант.
Тон? Гм.. Что-то вы черезчур серьезные, господин Twister..

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 01.06.2006 (Чт) 1:37

Перехват АПИ в данном случае - самый плохой вариант.
Самый плохой - слежение по таймеру.
Тон? Гм.. Что-то вы черезчур серьезные, господин Twister..
Черезчур? Нет. Все в пределах допустимого.
А я все практикую лечение травами...

Sandr0
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 65
Зарегистрирован: 17.11.2004 (Ср) 16:26
Откуда: Rostov-on-Don

Сообщение Sandr0 » 02.06.2006 (Пт) 7:30

Twister
Я согласен, что перехват по таймеру самый плохой вариант, но других способов пока не знаю, точнее другими пока не владею.
прогу я все-таки немного оптимизировал
сделал последовательную запись протокола в тхт файл - полегчало ей бедненькой.
но естестно сильно урезались возможности анализа протокола работы
надо попробовать вариант с использованием записи протокола на sql-сервер

зы. покрайней мере в таком варианте курсовую и экзамен защитил на отлично
Вложения
Вариант5.rar
(21.4 Кб) Скачиваний: 61

RUSYA
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 22.07.2005 (Пт) 20:17
Откуда: Харьков

Сообщение RUSYA » 04.06.2006 (Вс) 1:08

1) Сохранять лог не сразу в БД, а при закрытие своего приложения... правдо риск если обвалится, но тут карты в руки, делай так чтоб не вылетало...

2)Сохранять лог раз в определённое время...
Вариант с таймером однозначно плох, но даже если с ним, зачем ему интервал 1? Можно и 1000! поставить, ведь ничего страшного если лог времени запуска/остановки процесса будет на 1-2 сек. отличатся от реальной...
А как оно на самом деле - Х.З. !


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot, Bing-бот, SemrushBot и гости: 99

    TopList