0 / 0 / 0
Регистрация: 22.07.2013
Сообщений: 9
|
|
1 | |
Макрос со временем начинает тормозить12.01.2014, 22:50. Показов 6830. Ответов 7
Метки нет (Все метки)
Добрый день.
Нужен Ваш совет. Есть финансовая программа, которая обрабатывает данные в цикле. Данные поступают в несколько ячеек таблицы по протоколу DDE, программа в цикле последовательно их считывает, делает определенную обработку и результаты сохраняет в тхт файл. Если данные в ячейках обновились то цикл повторяется. Проблема в том, что когда программа работает непрерывно 2-3 дня, то скорость работы цикла увеличивается. И если при старте проход цикла занимает 0.1 секунду, то через 2 дня время может составить 3 секунды. Помогает только - закрыть и открыть ексель файл. Не могу понять какие показатели стоит проверить и на что обратить внимание. Загрузка процессора и оперативная память не увеличиваются, массивов нет. В цикле происходит запись в файл(примерно 200 строк каждую секунду), удаление ячейки (со сдвигом всех строк ниже), генерация случайного числа. Что посоветуете?
0
|
12.01.2014, 22:50 | |
Ответы с готовыми решениями:
7
Нужно найти причину торможения макроса (после срабатывания первого, второй макрос начинает сильно тормозить) Почему со временем Windows начинает тормозить? Со временем программа начинает тормозить так, что зависает курсор мыши в системе Во время игры комп начинает тормозить на определенное время, при этом начинает пищать блок питания, как только тормоза прекращаются писк тоже проходит |
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
|
|
15.01.2014, 14:39 | 2 |
Да, такое бывает - тоже много писал, удалял, раздвигал и через некоторое время начинались тормоза ... сталкивался с этим году в 2001 ... в результате, через пол года файл, в который сохранялись данные - ваабще отказался что-либо изменять (фактичеки, стал рид-онли). Тогда был зелен и проблему не решил ... т.е. все ниже - мои текущие предположения.
Напрашивается банальная утечка памяти или что-то близкое к этой теме. Попробуйте разделить код на 2 части - принимающий(определяющий, решающий) изменения(в одном приложении Excel) и выполяющий эти изменения(в другом приложении Excel). Изменили - сделали End(он сбрасывает какое-то окружение интерпретатора и окружение вашего кода ... но не все!, в результате чего утечка может сохраниться и проблема не решится). Если не поможет - пользуясь тем, что (как был совет сделать раньше) ваше второе приложение будет выполнять только задачи изменений (а не приема) - иногда его(управляя им из первого приложения) выгружать и загружать заново (в т.ч. с полным убиением самого Excel'я). Если будут проблемы с организацией взаимодействия 2х таких отдельных приложений - пишите. Ребята здесь помогут. Способов много.
0
|
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
|
|
15.01.2014, 16:34 | 3 |
Помоему самый простой путь. Взять что-то в духе AutoIT да сделать чтоб раз в день (ночью к примеру) убивался и снова открывался эксель. Костыль конечно, но стоит ли тратить кучу времени на поиск проблем, если можно без проблем всё решить? Я же так понимаю что перебои на пару секунд в день не страшны?
1
|
0 / 0 / 0
Регистрация: 22.07.2013
Сообщений: 9
|
|
16.01.2014, 01:10 [ТС] | 4 |
Да, спасибо.
Я тоже уже подумываю над этим. В программе можно установить время, когда она будет сохраняться и открывать/закрывать ексель. Правда вместе с екселем должно перезапускаться еще одно приложение. С кодом подскажете? Необходимо закрыть сторонню программу Закрыть и затем открыть ексель. И открыть стороннюю программу. Добавлено через 8 минут Утечка бы отразилась в загрузке памяти. А там все ровненько. Такое ощущение, буд то эксель как то запоминает или сохраняет удаленные ячейки. Я раньше встраивал Sleep в программу, чтоб не сильно грузила процессор, а сейчас у меня Sleep(0) и работет еле еле=)
0
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
|
|
16.01.2014, 11:52 | 5 |
не по порядку.
Не понимайте все дословно. Утечку вы можете и не увидеть. Как сказал "... или что-то близкое к этой теме". Это может быть что угодно. К примеру - (почему-то)увеличивающийся счетчик каких-то пересчетов при определенных операциях каких-то изменений - и любое такое изменение будет происходить все медленнее и медленее ... для нас с вами - это "черный ящик". Какое решение использовать - будь это AutoIt, WSH или даже древний KIX - ваш выбор. Если (безответный)простой "серверой части", принимающей решения об изменениях или принимающей запросы на эти изменения - допустим(т.е. без последствий для системы: вы спокойно можете потерять запросы на изменения и/или не выполнить их вовремя и т.д.), то можете снимать и само приложение. А если нет, то подумайте над разделением. Попробуйте с кодом сами. Покажите, что получилось. Вам подскажут если что ...
0
|
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
|
|
16.01.2014, 13:36 | 6 |
Не подскажу. С AutoIT работаю крайне мало и ерундово. Но по опыту ерунда гуглится быстро. Там вам получатся таймер нужен, активация окон и отрытие ярлыков
0
|
0 / 0 / 0
Регистрация: 22.07.2013
Сообщений: 9
|
||||||||||||||||
28.01.2014, 22:38 [ТС] | 7 | |||||||||||||||
В общем. Спасибо Вам за помощь и поддержку. Меня до сих пор удивляет и одновременно очень сильно помогает Ваш форум. Приятно что добрые люди готовы беплатно помочь решить чужую задачу.
Теперь по делу: Действительно Excell начинает тормозить если в течение длительного времени происходить смещение ячеек. В моем случае это удаление одной ячейки со сдвигом вверх всего столбца. Тормозит при это только ексель, сам процессор при этом не загружается. Единственный выход который нашел я - это перезапускать ексель. Делаю я это через bat файл. В определенный момент времени ексель сохраняется, запускает bat, (который находится в той же папке) и макрос сам закрывает ексель. bat файл начинает работать спустя 5 секунд после запуска и первой же командой запускает только что закрытый ексель файл. В сам ексель встроен таймер, который перезапускает программу раз в час. Вариантов кода для реализации очень много. Мой вариант: Ексель
0
|
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
|
|
29.01.2014, 18:40 | 8 |
0
|
29.01.2014, 18:40 | |
29.01.2014, 18:40 | |
Помогаю со студенческими работами здесь
8
Интернет начинает тормозить Резко начинает тормозить сервер ASUS x550LB начинает тормозить Не сразу начинает тормозить Ubuntu Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |