Страницы: 1
RSS
сколько времени должна занимать работа макроса
 
Есть макрос, который ищет определенные значения  в 1000 строк и записывает подходящие значения в другие строки, его работа занимает от полу часа....

Возник  вопрос, а сколько по времени должен работать макрос, с чем связана такая задержка?  :qstn:
 
Макрос должен работать ровно столько, сколько ему нужно, чтобы выполнить работу. А  это "нужно" зависит от того, как написан код , что макрос обрабатывает, как он обрабатывает.

Пойди туда, не знаю куда, возьми то, не знаю что... Так Ваш вопрос звучит.
Создайте тему в основной ветке, покажите пример... А так - очередная тема для поговорить
 
Так я и создал тему чтобы поговорить, я просто думал всегда что Макрос служит для облегчения жизни пользователю, в моем случае получается, я руками делаю все точно также по времени, макрос просто автоматизировал этот процесс, то есть я могу запустить его и  уйти заниматься своими делами, но работать на компьютере в это время не могу, так как он просто зависает от такого объема.... файл весит много 8 мегабайт аж..

Хочется услышать мнение со стороны, если есть некий макрос который кажется работает долго, теоретически его можно ускорить?
 
Теоретически - да, можно ускорить работу большинства макросов.
Записанный макрорекодером. имеет много лишнего мусора, на выполнение которого расходуется время.
В обрабатываемой книге могут быть формулы, которым нужно время для пересчета. Неоптимально написанный код может по многу раз вызывать обрабатотку событий листа или книги.
Перерисовка экрана занимает кучу времени.
Обращение к объектам листа медленное. Можно в разы ускорить, если занести данные в массив, там обработать, результат вывести на лист (всего 2 обращения к листу вместо тысяч вопросов к ячейкам).
Словари-коллекции никто не отменял.
Неупорядоченные данные - тот еще тормоз. Например, искомое значение находится в миллионной строке. В несортированном диапазоне последовательный поиск - миллион итераций, в сортированном - не более 20 раз. Разница есть?
 
знаете что мне помогло, я просто создал чистый эксель файл вставил туда только то что мне нужно из файла, и вместо полу часа процесс занял 10 секунд.... просто бинго!!
 
И как это связано с темой "а поговорить"? :)
Нужно разбираться в каждом конкретном случае. Ваш файл мог быть инвалидом - где-то что-то пошло не так и внутренность дала трещину.
Возможно, на листе, кроме нужного, находится много чего такого, о чем Вы и не подозреваете - форматирования, сотни объектов...

Цитата
DJMC написал: . просто бинго!!
А Вы не очень-то радуйтесь... Бинго будет, когда поймете причину и не допустите такого в дальнейшем.  Иначе через время вместо бинго можете получить очередное фиаско
 
связано это с тем что в процессе разговора, Вы указали на тысячи причин, а лучший способ проверить работу макроса, это создать новый пустой файл только с одним макросом.

На счет конкретного случая, боюсь если я выложу весь свой файл со словами он тормозит, врядли кто то поможет, по этому приходиться заниматься дурацкой работой, создавать кучу файлов с одним макросом, а потом сводить в один путем копирование конечного результата.
 
Цитата
DJMC написал: лучший способ проверить работу макроса, это создать новый пустой файл только с одним макросом.
Один из..., но далеко не лучший.
Пример. Макрос выдает ошибку в вычислении. Горе-программист создает 125 новых файлов с этим макросом, не спит три ночи и два дня... А в коде, оказывается, переменная неправильно записана :)
 
Цитата
DJMC: лучший способ проверить работу макроса, это создать новый пустой файл только с одним макросом
вы понятия не имеете, о чём говорите - опыта ноль, выборка - пара макросов и уже такие глобальные "результаты" (не говоря уже о том, что необоснованно спорите с куда более опытным человеком)
Смешно просто, а тема ни о чём - на ваши макросы из тем просто больно смотреть и сравнивать их вряд ли с чем-то будет возможно (аналогов нет), ведь никто так и не смог понять, что вы хотите

UPD:
"Сколько должен работать макрос?" - бредовый вопрос
"Почему так долго?" - потому что макрос написан ужасно
"Можно ли быстрее?" - точно можно, и в разы
"Как сделать быстрее?" - пойти по пути, предложенному более полугода назад, то есть объяснить задачу и ждать профи, которому будет интересно или создать тему в платной ветке (но вы уже так делали и там тоже никто ничего не понял)

Плюс форума ещё в том, что спецов здесь не 2, не 3, а гораздо больше (и многие — очень высокого уровня) + часто нам интересно "соревноваться" в более удобном и/или скоростном решении, а значит интересный вопрос получит если не самое скоростное и удобное решение, то точно не самое плохое и уж наверняка - рабочее
Изменено: Jack Famous - 06.04.2021 11:08:41
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх