Вопрос к профи, хочу понять одну вещь.
Щас вот заюзал в рабочих целях Асап Утилит, функция -
выделение строк по содержанию в них определенного текста по маске с последующим удалением...
Вся процедура на 20000 проверяемых строках заняла порядка 20мин., и вот что мне непонятно...
Почему так? Т.е. в связи с чем такая большая во времени обработка данных, дело в процессоре или он выворачивает так много в оперативку?
Тогда момент!
Всю эту процедуру, я могу разложить на следующие составляющие:
1. Поиск строк по ключевому слову (Эксель для этих же 20000 строк сделал это за 1сек.!)
2. Копирование адресов строк содержащих ключевые слова (учитывая что Эксель их уже нашел и отобразил, я так понимаю это операция еще на 1сек.
просто в Экселе нет такой возможности отсюда и потребность в доп.утилитах)
3. Выделение строк по списку - адресам (что-то мне подсказывает, что это тоже мгновенная процедура)
4. Удаление выделенных строк (тут опять же в самом Экселе легко убедится, что если
строки нефильтрованы, то 20000ед. исчезает также за 1сек., в фильтре бывает чуть дольше)
Таким образом! Что мешало этому разработчику сформировать алгоритм согласно описанной схеме:
-использовать ПОиск Эксель
-через команду макроса запомнить найденное, выделить и удалить. Все! 4 секунды!!!
Нахрена он что-то там аккумулировал 20 минут в моей оперативке??? с очевидной регрессией скорости к завершению, т.е. переполнении памяти?
Ведь однозначно глупо выглядит, что Эксель 2007 допуская более 1млн. строк, посредством доп.утилиты не может за разумный временной промежуток выполнить примитивную процедуру пакетной обработки данных на типичном по мощностям компьютере на 20000строках вывода, что составляет всего лишь 2% от его потенциала!!! Разве не жесть?!
А если мне потребуется это выполнить на полумиллионном списке?!
Да, забыл уточнить, вся процедура шла по одному столбцу, страшно представить что было бы если бы я задал весь лист, в то время как сам Эксель даже на нескольких листах осуществляет молниеносный поиск, если текста в ячейках немного
Щас вот заюзал в рабочих целях Асап Утилит, функция -
выделение строк по содержанию в них определенного текста по маске с последующим удалением...
Вся процедура на 20000 проверяемых строках заняла порядка 20мин., и вот что мне непонятно...
Почему так? Т.е. в связи с чем такая большая во времени обработка данных, дело в процессоре или он выворачивает так много в оперативку?
Тогда момент!
Всю эту процедуру, я могу разложить на следующие составляющие:
1. Поиск строк по ключевому слову (Эксель для этих же 20000 строк сделал это за 1сек.!)
2. Копирование адресов строк содержащих ключевые слова (учитывая что Эксель их уже нашел и отобразил, я так понимаю это операция еще на 1сек.
просто в Экселе нет такой возможности отсюда и потребность в доп.утилитах)
3. Выделение строк по списку - адресам (что-то мне подсказывает, что это тоже мгновенная процедура)
4. Удаление выделенных строк (тут опять же в самом Экселе легко убедится, что если
строки нефильтрованы, то 20000ед. исчезает также за 1сек., в фильтре бывает чуть дольше)
Таким образом! Что мешало этому разработчику сформировать алгоритм согласно описанной схеме:
-использовать ПОиск Эксель
-через команду макроса запомнить найденное, выделить и удалить. Все! 4 секунды!!!
Нахрена он что-то там аккумулировал 20 минут в моей оперативке??? с очевидной регрессией скорости к завершению, т.е. переполнении памяти?
Ведь однозначно глупо выглядит, что Эксель 2007 допуская более 1млн. строк, посредством доп.утилиты не может за разумный временной промежуток выполнить примитивную процедуру пакетной обработки данных на типичном по мощностям компьютере на 20000строках вывода, что составляет всего лишь 2% от его потенциала!!! Разве не жесть?!
А если мне потребуется это выполнить на полумиллионном списке?!
Да, забыл уточнить, вся процедура шла по одному столбцу, страшно представить что было бы если бы я задал весь лист, в то время как сам Эксель даже на нескольких листах осуществляет молниеносный поиск, если текста в ячейках немного