On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение



Пост N: 1
Зарегистрирован: 19.07.09
ссылка на сообщение  Отправлено: 19.07.09 16:21. Заголовок: Непонятное резкое замедление работы программы


WinXP Clipper 5.1+Blinker 6. В цикле читаю текстовые файлы и ищу соответствие данных с данными в dbf. По ходу работы вывожу на экран счетчик и проверяю inkey() нажатие любой клавиши. Через некоторое время работа программы резко, в разы замедляется, причем при каждом запуске при обработке разных файлов, иногда может очень быстро обработать 5 файлов, иногда 10 и т.д. Подскажите, пожалуйста, в чем может быть причина и как с ней бороться.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]


постоянный участник


Пост N: 349
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.07.09 13:20. Заголовок: Лишь могу предположи..


Лишь могу предположить, что одна из возможных причин, что в программе идет работа со строками данных, которые выделяются в виртуальной памяти, а работа системы виртуальной памяти в Clipper замедляет работу программы. То есть вопрос связан с тем, сколько одновременно в блоке кода используется строк

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 20.07.09 19:27. Заголовок: Замедление обработки


Нет сведений:
1) сетевая среда или локальный диск компа
2) замедление + ускорение равно(?) в среднем - времени чтения,копирования файлов вне программы (файловым менеджером)

1) Если есть ннтивирус - он может "долго" проверять часть "текстовых файлов", что читает программа. Можно отключить антивирусу - проверку на определенные файлы

2) Возможно, кешируется чтение диска или запись (добавить памяти).

3) Можно посмотреть что делает программа/система в моменты замедления - утилитами SYSINTERNALS Diskmon PROCMON




Спасибо: 0 
Цитата Ответить
постоянный участник




Пост N: 131
Зарегистрирован: 24.09.05
ссылка на сообщение  Отправлено: 02.11.09 14:03. Заголовок: Во время работы прог..


Во время работы программы нажми ALT и убедись, что она начинает работать быстро

Замедление происходит потому, что ты используешь функцию разгрузки процессора в режиме ожидания типа NTIdle() или нечто аналогичное, которая во время считывания кнопки клавиатуры передает управления операционной системе, чтобы она могла делать свои дела

ПОсколько в цикле ты постоянно вызываешь inkey(), это интерпретируется как простой

решение 1. - отключать на время работы функцию разгрузки систему, если библиотечный модуль для разгрузки системы имеет соответствующие функции (мне такие модули неизвестны, кроме моего собственного)

решение 2. проверять нажатие кнопки не чаще 1 раза в секунду (2 раза/сек уже может снизить производительность). для этого необходимо будет использовать постоянный вызов seconds(), что в XP вызывает торможение всех остальных программ. Т.е. функцию seconds() надо менять на нечто своё

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2
Зарегистрирован: 16.12.09
ссылка на сообщение  Отправлено: 16.12.09 16:02. Заголовок: Посмотри на http://n..


Посмотри на http://nova-mir.narod.ru

В Clipper есть много тонкостей

Cкачай там демо, а в них прочитай все Read.me и в демо-примере раздел "Комментарии"

Там написано, что можно ускорить работу Clipper-программ, особенно в XP

Но лучше почитай сам, потому что когда другие показывают как поет Карузо у них все-равно так не получается


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 3
Зарегистрирован: 01.01.10
ссылка на сообщение  Отправлено: 01.01.10 22:15. Заголовок: Можно посоветовать з..


Можно посоветовать заменить INKEY() на INKEY(.1) - это для того чтобы не перегревался камень (CPU) и система ACPI не снижала "обороты" для защиты от перегрева процессора. Также можно посоветовать перейти с платформы 16-разрядного DOS-приложения (классический Clipper 5.xx) на платформу 32-разрядного консольного Windows-приложения (xHarbour 1.0.0 или более поздний) с плоской моделью (flat) памяти и неограниченными по длине символьными строками. Не советую использовать Blinker, лучше EXOSPACE (версии 1.0g) в комплексе с Clipper Tools 3.0c и собственно Clipper 5.2e - комбинация проверенная!
Пример скрипта для компоновки с EXOSPACE (взято из реальной задачи):
EXO PAC DOS25,NOVM # пакеты abs disk r/w (INT25) & NO Virtual Memory
OU mainprog # главная программа
FI mainprog # главная программа
LI exospace # для перебивки стандартных библиотек идущих следом
LI clipper # std lib
LI extend # std lib
LI terminal # std lib
LI dbfntx # or other RDD driver lib
LI ctp # Clipper Tools (protected mode)
Также можно посоветовать проиндексировать .dbf файл в соответствии с нуждами поиска и искать в нем не LOCATE FOR ... а при помощи функции DBSEEK().


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 169
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет