|
v7: Сортировка список значений vs таблица значений |
☑ |
0
dk
14.07.16
✎
13:10
|
тестирую скорость обработки и наткнулся на странные тормоза
оказалось тормозит сортировка списка значений
Обработка работает с большими наборами данных - в списке значений около 100 тыс записей
Решил замерить скорость
//*******************************************
Процедура СформироватьСЗ()
СЗ = СоздатьОбъект("СписокЗначений");
Для Сч = 1 По 100000 Цикл
СЗ.ДобавитьЗначение(_GetPerformanceCounter()%(100000+1));
КонецЦикла;
Сообщить("Список значений");
Сообщить("Старт: " + ТекущееВремя());
СЗ.Сортировать(-1);
Сообщить("Финиш: " + ТекущееВремя());
КонецПроцедуры
//*******************************************
Процедура СформироватьТЗ()
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Зн", "Число", 15, 0);
Для Сч = 1 По 100000 Цикл
ТЗ.НоваяСтрока();
ТЗ.Зн = _GetPerformanceCounter()%(100000+1);
КонецЦикла;
Сообщить("Таблица значений");
Сообщить("Старт: " + ТекущееВремя());
ТЗ.Сортировать("Зн-");
Сообщить("Финиш: " + ТекущееВремя());
КонецПроцедуры
Итог:
ТЗ меньше секунды сортируется
СЗ около 10 минут
|
|
1
HawkEye
14.07.16
✎
13:11
|
(0) продолжай наблюдение
|
|
2
VladZ
14.07.16
✎
13:13
|
(0) Что у тебя там за данные? Пересчитываешь звезды во вселенной?
|
|
3
dk
14.07.16
✎
13:14
|
Удаляю строки из еще большей таблицы значений - там под 200 тыс записей
|
|
4
VladZ
14.07.16
✎
13:15
|
(3) А исходная что содержит?
|
|
5
dk
14.07.16
✎
13:18
|
остатки товаров нескольких разрезах
|
|
6
VladZ
14.07.16
✎
13:18
|
Вопрос к тому, что 1С не предназначена для таких объемов данных. Возможно, вам нужно пересмотреть алгоритм задачи. Либо, как вариант, для больших объемов данных использовать внешние базы данных.
|
|
7
dk
14.07.16
✎
13:19
|
)))
|
|
8
VladZ
14.07.16
✎
13:21
|
Для больших объемов можно посоветовать связку 1С++ и MS SQL.
|
|
9
dk
14.07.16
✎
13:21
|
уже
|
|