#0
by fisher
Напомните, плиз, в двух словах (чтоб долго не искать), суть самого быстрого алгоритма удаления строк из ТЗ по итогам конкурса (того, что на проклаб выкладывалось). Если не требуется сохранения исходного порядка строк.Проставка в отдельной колонке признака удаления строки, сортировка по нему, выгрузка в новую таблицу того, что должно остаться и удаление старой таблицы? Так? Или что-то еще быстрее было?
#1
by Diman000
Вот уж не думаю, что сортировка, да еще потом выгрузка в новую ТЗ будет самым быстрым алгоритмом. По-моему классический перебор гораздо быстрее. Тем более, что с очень большими ТЗ с количеством десятками тысяч строк 1Сина ворочается далеко не мгновенно. Самый быстрый алгоритм не помню, всегда перебором делал. А в 8ке с этим стало еще проще.
#2
by Diman000
Вот уж не думаю, что сортировка, да еще потом выгрузка в новую ТЗ будет самым быстрым алгоритмом. По-моему классический перебор гораздо быстрее. Тем более, что с очень большими ТЗ с количеством десятками тысяч строк 1Сина ворочается далеко не мгновенно. Самый быстрый алгоритм не помню, всегда перебором делал. А в 8ке с этим стало еще проще.
#3
by fisher
2 Нифига. Суть была в том, что УдалитьСтроку очень тормознутый метод, и почти любая альтернатива была быстрее. Это я точно помню.
#4
by fisher
2 Ессно, если табличка небольшая или количество удалений минимально, тогда нет никакого смысла заморачиваться. А на больших таблицах с большим количеством удалений ускорение заметное получалось...
#8
by fisher
2 Оригинальный и быстрый метод получения количества удаляемых строк. Я что-то навскидку не сообразил, уже НайтиЗначение начал присобачивать :)
#11
by zzz
Конкурс: самый быстрый вариант удаления ненужных строк из Таблицы Значенийhttp://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=1419
#12
by Мощный
6. Красивый, почти похож на мой, только я реально удалял то кол-во строк, которое получалось, хотя реально строкаТЗдляЧистки.Выгрузить(ТЗРаб);не совсем нужна, соответсвенно и движения с ней в алгоритме11. туда не вошли куда более быстрые алгоритмы2. Даж с 2 сортировками будет куда быстрее на порядок, чем метод посл.перебора
#13
by zzz
2 да ты что! Там очень легко добавляются алгоритмы, приводи цифры замеров своего "МегаАлгоритма".
#14
by Мощный
13. Честно скажу, после диспутов 1.5, 2-х-годовой давности и не смотрел, свой вроде не успел влепить тогда, так что спасибо
#15
by fisher
+ В самом деле, свои алгоритмы легко добавляются и проверяются, в этом-то и состаяла задумка.2 Не думаю, что ты сможешь предложить что-то радикально быстрее уже существующего.Я уже сделал ряд прогонов для своего комбинированного алгоритма, похожего на , но использующего Заполнить, вместо Выгрузить. Это несколько быстрее (идея NS).В общем, выводы такие: извращаться имеет смысл, когда количество строк исчисляется тысячами и удаляется большое количество строк. Иначе эффект несущественнен.Зато уже при количестве строк 20000 алгоритмы подобные дают более чем десятикратный(!) выигрыш производительности (если нужно удалить 50% строк) по сравнению с использованием метода УдалитьСтроку.А при большем количестве строк вообще хана. Судя по тестам, скорость метода УдалитьСтроку зависит от количества строк таблицы, причем весьма неслабо. В этом и проблема. Т.е. чем больше строк в таблице, тем удаление единичной строки методом УдалитьСтроку выполняется все медленнее и медленнее. Возможно это связано и с количеством предыдущих удалений, лень проверять.
#16
by Мощный
15. Так ведь с NS-м вроде мерялись порядками на количестве 5-6 тыщ, не так давно, там дело еще до выгрузки в ДБФ доходило. Что касается операции удаления, так чтоб избежать эффекта предыдущих удалений, можно ж и с конца удалять.. Тоже ведь найтить надо те опыты - та ж лень
#17
by fisher
2 Для тестирования лучше юзать количества поболее, чтобы сгладить погрешности.Пробовал с конца удалять - эффекта нет.
#18
by КонецЦикла
Самый быстрый алгоритм для малого (может около 50 штук) кол-ва строк написан в ТиС :)
#20
by fisher
2 А про ТЗ и выгрузку в ДБФ помню, NS доказывал, что НайтиЗначение тоже дюже тормознутый метод на больших таблицах и использовал поиск в индексированных ДБФ. Даже с учетом перегрузок в/из ДБФ получалось в разы быстрее. И не он один эти грабли раскапывал. В итоге в 1С++ появился новый класс :)
#24
by КонецЦикла
ищет калечно, какая-то линейная зависимость (в зависимости от месторасположения строки) бывает...
#25
by Чучундер
> ТЗдляЧистки.Выгрузить(ТЗРаб);> не совсем нужна, соответсвенно и движения с ней в алгоритмеЭто как можно обойтись?Обрезка таблицы меттодом КоличествоСтрок(нужное) - не использовалась сознательно.
#26
by fisher
2 Ага. И еще какая-то фигня была, если предварительно сортировка использовалась. Чуть ли не того плана, что в отсортированной таблице медленнее ищет, чем в не отсортированной. В общем, намудрили что-то разработчики. Но оно и немудрено, объект достаточно сложный, а на больших объемах данных, судя по всему, его не тестили.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Пособие до 3-х лет и досрочный выход
- v7: Почему-то ошибка блокировки метаданных
- Почему из 1C в Excel копирует иероглифы вместо русского шрифта?
- Помогите!! Ошибка Ошибка SDBL
- Загрузка из DBF. Перед выполнением операции установите объект на запись!
- Форматирование страницы Excel
- Как изменить основную валюту
- Как запустить некий процесс 1С в отдельном потоке...
- Создать несколько ТЗ в цикле
- Удалить давно уволенных из справочника сотрудников.
- 1C++ прямой запрос к MSSQL Периодическое значение справочника
- Конвертация DBF IV в DBF III
- Конвертация DBF IV в DBF III
- как в 1С использовать виндовые семафоры
- установка 1с на windows server 2003
- Как узнать "себестоимость" товара? ТиС v77
- Налог исчисленный и налог удержанный. И почему они могут несовпадать?
- Как списать НДС сч. фактуры с 19.3 на счет 91.2 при формировании кн. покупок
- ??? Запрос=V7.CreateObject("Запрос") ??? туплю что то...
- 1С++, табличное поле. Текущая строка. Меняется при обновлении.