Исследование скорости работы.
Исходные данные: Катротека с 7500 записей. (8полей: 2строковых,
3 численных, 3 ссылочных)
Задача: разом перебить 1 или несколько полей во всей (или части) картотеке.
Опыт 1 (обычный). Просто открываем всю область, перебиваем
циклом с 1 записи до 7500, и ЗакончитьИзменения. Долговыполнимая процедура.
С ростом счетчика цикла скорость падает катострофически.
Время на перебивку - 37 сек
Время на сохранение -45 сек
Общее время - 82 сек
Опыт 2 - Уже лучше!. Просто открываем всю область, перебиваем
циклом с 1 записи до 2500 (Большие куски.), ЗакончитьИзменения,опять открываем
всю область, перебиваем циклом с 2500записи до 5000, ЗакончитьИзменения,опять
открываем всю область, перебиваем циклом до конца и ЗакончитьИзменения. .
Время больших кусков:
На перебивку - 13 сек
На сохранение - 47 сек
Общее время - 70сек
Опыт 3- Золотой
.
Просто открываем всю область, перебиваем циклом с 1 записи до 800 (мелкие куски.),
ЗакончитьИзменения,опять открываем всю область, перебиваем циклом с 800 записи
до 1600, ЗакончитьИзменения,опять открываем всю область, перебиваем циклом с
1600 записи до ..., ЗакончитьИзменения. Максимальная скорость.
Мелкие куски.
Время на перебивку - 9 сек
Время на сохранение -40 сек
Общее время - 49 сек
Опыт 4- труп :( Открываем область с фильтром на часть записей,
перебиваем циклом 800 записей, ЗакончитьИзменения, далее снова открываем область
с фильтром на другую часть записей, перебиваем циклом следущие 800, ЗакончитьИзменения
и т.д., пока все не изменим. Эту операцию на Paradox-е нельзя делать. Работа
в фильтрованной области ужасно медленна, само открытие тоже, ну в общем - вот
цифры.
Время на перебивку - 91 сек
Время на сохранение -35 сек
Общее время - 144 сек
ИТОГО: еще раз подтверждается ужасная работа с фильтрами в Paradoх - все дружно переходим на SQL :-) . Работа с памятью гнусна, т.е. все, что делаете, делайте мелкими кусочками - целее будет, и самое главное и хорошее - скорость сохранения прямо зависит от объема данных. Т.е. много раз по мелочи - сохраним почти так же, как и большие.