Новости:

Форум на данный момент в стадии обновления. Если у Вас возникли проблемы со входом в свою учетную запись - просьба писать на email: info@excel-vba.ru

Главное меню

Прогрессирующее замедление выполнения однотипных макросов.

Автор Мясо, 30.06.2015, 14:39:13

« назад - далее »

Мясо

#15
Цитата: RAN от 05.07.2015, 19:44:23Как вариант, для начала убрать из кода все Select'ы
Спасибо за предложенный вариант, RAN, на следующих выходных обязательно займусь редактированием.
Цитата: doober от 05.07.2015, 19:46:15FreeMem = Space(307200000)
Благодарю, doober, за оригинальный способ очистки памяти. Буду пробовать.

vikttur


Мясо

Цитата: RAN от 05.07.2015, 19:44:23
убрать из кода все Select'ы
Уважаемый RAN, любой сложный и громоздкий код можно усовершенствовать практически до бесконечности - но нужно ли это? Дело в том, что в моём случае те 7 секунд (время выполнения первого цикла) меня вполне устраивают, и кропеть над превращением этих семи секунд в, предположим, пять или даже четыре у меня нет острой необходимости. Я с Вашей помощью пытаюсь бороться с замедлением выполнения последующих циклов: ведь даже если мы доведем время выполнения первого цикла до 4-х секунд, сотый цикл всё равно будет выполняться страшно долго (минут пять против девяти минут при первоначальном семисекундном цикле). Нужно найти способ как-нибудь изощриться и выколупать откуда-то из системы это накапливающееся торможение.

Цитата: doober от 05.07.2015, 19:46:15
Для эксперимента выполняйте этот  через 10 циклов.

Уважаемый doober, к сожалению этот код не работает: запускаемый из Excell выдает error 14, запускаемый вне Excell (*.vbs) не приносит ровным счетом никакого улучшения. Windows 7 extr. Но по-прежнему даёт отличный результат закрытие программы после выполнения каждых 30 или 50 циклов.
Цитата: vikttur от 06.07.2015, 01:50:30
Цитата - это не!
Уважаемый vikttur, моё мнение относительно взаимосвязи цитат с сообщениями абсолютно идентично Вашему. Как мы с Вами похожи!

doober

Стало интересно.
Взял часть кода,которая работает по листу  Sheets("ЗНАЧ")
Ваш код отработал 100 циклов за 7 секунд.
Прикол в том,что чем дальше от старта тем быстрее выполняется
Оптимизировал.
100 циклов за 1 сек.
Лог прилагаю.
Хотите получить помощь, больного на операционный стол в студию

Мясо

Цитата: doober от 10.07.2015, 10:23:42
Оптимизировал.
100 циклов за 1 сек.
, больного на операционный стол

Уважаемый doober, так я выложил весь проблемный код, больше там ничего нет. А если Вы о  том, чтобы выложить здесь всю книгу - так в ней около гигабайта веса,  несколько сотен листов и более 2-х тысяч всевозможных скриптов.
К тому же, я не хочу ничего оптимизировать -  мне и без того очень сложно было в свое время во всех этих скриптах разобраться и понять что к чему благодаря этому форуму. В общем, еле в голове своей уложил и запомнил, и теперь вновь ворошить как-то стрёмно. Я хочу, чтобы время выполнения в сотый раз запускаемого скрипта не отличалось  от времени выполнения этого скрипта впервые - и, насколько понимаю, эта проблема лежит вне области как VBA, так и Excell. Иначе невозможно объяснить, почему цикл "запускExcell-запуск5разСкрипта-выходИзExcell" занимает 25 секунд времени, а цикл  "запускExcell-запуск100разСкрипта-выходИзExcell" занимает 30 минут.

Юрий М

Цитироватьболее 2-х тысяч всевозможных скриптов
Офигеть! ))

doober

А я, наивный ,думал,что у меня большой проект.
File              VBAProject
File Type      Project(MatrixAdmin.xlam)
Code Lines  24 265 (94%)
Procedures  1076
На этом и остановился,при добавлении новых начало все тормозить и Excel с ошибками вываливался.


Юрий М

Не, на самом деле столько процедур? Или столько строк кода? )

RAN

 Котяра, ну один выложенный макрос имеет, наверное, столько строк   :D
А что ты умеешь?
Учиться...

Юрий М

Написано:
Цитироватьболее 2-х тысяч всевозможных скриптов
- вот я и засомневался ))
P.S. От котяры и слышу!  ;D

Мясо

Цитата: Юрий М от 14.07.2015, 23:04:46
Не, на самом деле столько ?
Нет, конечно.) На самом деле макросов более 3-х тысяч. И, скорее всего, даже ближе к 4-тысячной отметке.

Яндекс.Метрика Рейтинг@Mail.ru