|
Как ускорить работу с таблицей значений? | ☑ | ||
---|---|---|---|---|
0
John83
20.09.20
✎
12:53
|
Вот тут возможно что-то сделать?
Для Каждого стр Из ТабОрдеров Цикл Если стр.Вид = "Продажа" И Курс >= Стр.КурсСделки Тогда Доллар = Доллар + Стр.Количество * стр.КурсСделки - (Стр.Количество * стр.КурсСделки)/100*0.075; СтрокиКУдалению.Добавить(стр); КолвоСделок = КолвоСделок+1; ИначеЕсли стр.Вид = "Покупка" И Курс <= стр.КурсСделки Тогда Эфир = Эфир + стр.КурсВхода/стр.КурсСделки*стр.Количество - (стр.КурсВхода/стр.КурсСделки*стр.Количество)/100*0.075; СтрокиКУдалению.Добавить(стр); КолвоСделок = КолвоСделок+1; КонецЕсли; КонецЦикла; Или может вместо таблицы что-то другое использовать? Задача состоит в том, что тестирую бота. В РС загрузил курсы и в цикле все это обрабатываю. |
|||
1
Cthulhu
20.09.20
✎
12:59
|
начните с хронометража в отладке. макс.тормоза - сюда.
|
|||
2
RomanYS
20.09.20
✎
13:00
|
(0) Или может вместо таблицы что-то другое использовать?
Если данные в РС, то логично использовать запрос. А замер делал? Сомнительно что тормоза в этом коде |
|||
3
John83
20.09.20
✎
13:14
|
(2) в РС хранится дата и курс. Разумеется эти данные извлекаю запросом
|
|||
4
RomanYS
20.09.20
✎
13:18
|
(3) Извлекай с учетом всех условий, не нужно перебирать и фильтровать
|
|||
5
МихаилМ
20.09.20
✎
13:30
|
(0)с помощью пз отфильтруйте тз в 2 тз. далее в обсчитайте в фз.
либо попробуйте в скд с сверткой по полю вид . |
|||
6
John83
20.09.20
✎
13:48
|
(5) ч.т. пз и фз?
|
|||
7
John83
20.09.20
✎
13:51
|
(4) сначала на ТЗ делать условие НайтиСтроки?
|
|||
8
H A D G E H O G s
20.09.20
✎
13:54
|
Тут нечему тормозить.
Сколько строк в таблице, какое время выполнения, что показывает замер? |
|||
9
Chameleon1980
20.09.20
✎
13:56
|
пз построителт
фз, наверное, функция запрса |
|||
10
John83
20.09.20
✎
13:58
|
||||
11
H A D G E H O G s
20.09.20
✎
14:02
|
(10) не 10 строк, а 215000 строк. Просадки на арифметике.
|
|||
12
John83
20.09.20
✎
14:12
|
(11) откуда такое умозаключение?
|
|||
13
ДенисЧ
20.09.20
✎
14:14
|
(12) Мда...
|
|||
14
Cyberhawk
20.09.20
✎
14:15
|
(12) Из 4-го столбика
|
|||
15
John83
20.09.20
✎
14:20
|
(14) можно разжевать для танкистов?
|
|||
16
Cyberhawk
20.09.20
✎
14:25
|
(15) Нумерация с 1
|
|||
17
John83
20.09.20
✎
14:28
|
(16) что нумерация с 1?
|
|||
18
МихаилМ
20.09.20
✎
15:50
|
фз - фоновое задание
|
|||
19
hhhh
20.09.20
✎
16:27
|
(15) на вашей картинке 4-й столбец, там указано количество раз, и видим, что 214797 раз вызывается эта строка.
|
|||
20
John83
20.09.20
✎
16:40
|
(19) ну логично же :)
и это я показал только малую часть от всего времени Выборка проходит по всем курсам валют и внутри этого цикла происходит обработка данных. В выборке где-то полтора миллиона записей. Плюс эту выборку нужно повторить где-то 200 раз. А ТЗ по факту, никогда больше 10 строк не собирается. |
|||
21
hhhh
20.09.20
✎
17:36
|
(20) тогда зачем вы такой дебильный запрос задали "Как ускорить работу с таблицей значений?". Это неуважение к форуму.
|
|||
22
RomanYS
20.09.20
✎
17:36
|
(10) странный замер какой-то. Почему тупая арифметика в первых 5 строках на 1.5 порядка медленнее тупой арифметики в строке с расчетом УменьшениеЦены?
Повторять пробовал, картина не меняется? (20) Просто получи нужные 10 строк запросом |
|||
23
Злопчинский
20.09.20
✎
20:56
|
извинте, но 5 копеек. в чем глубокий смысл сначала делить на 10, а потом умножать на 0.075
|
|||
24
RomanYS
20.09.20
✎
21:06
|
(23) не на 10, а на сто.
Предположу, что в будущем можно будет заменить 0.075 на ПроцентКомиссии например |
|||
25
John83
20.09.20
✎
21:54
|
(23) ну да, буквально только что сделал *0.99925
(24) все так и есть |
|||
26
lubitelxml
20.09.20
✎
21:58
|
Убрать постобработку данных (расчет) и сделать все запросом.
|
|||
27
Cyberhawk
21.09.20
✎
14:00
|
(17) Столбиков
|
|||
28
TormozIT
гуру
21.09.20
✎
17:00
|
Слишком высокая точность чисел? Покажи в отладчике целиком все операнды на лидирующей в замере строке.
|
|||
29
TormozIT
гуру
21.09.20
✎
17:02
|
Являются ли какие то переменные-операнды в этой строке параметрами метода, передаваемыми по ссылке?
|
|||
30
TormozIT
гуру
21.09.20
✎
17:03
|
Этот код выполняется на клиенте или на сервере?
|
|||
31
TormozIT
гуру
21.09.20
✎
17:05
|
(30) Увидел - на клиенте. Возможно что какие то из этих переменных отображаются на форме. Поэтому при каждом их изменении срабатывает перерисовка визуального представления.
|
|||
32
RomanYS
21.09.20
✎
17:09
|
(31) кстати вариант, это объяснило бы странности в (22)
|
|||
33
Cthulhu
21.09.20
✎
17:17
|
(31),(32): не вариант. отрисовка замораживается на время выполнения одного потока кода. (да-да-да, и в восьмерке тоже...)
|
|||
34
RomanYS
21.09.20
✎
17:26
|
(33) тупой замер показывает стабильную разницу ~20%. (22) это точно не объясняет
|
|||
35
TormozIT
гуру
21.09.20
✎
17:37
|
(33) Ошибаешься. Обычные формы во многих случаях перерисовываются синхронно.
|
|||
36
Жан Пердежон
21.09.20
✎
17:40
|
ТС пишет одно, замеры приводит другие,
что ускорять по таким замерам вообще не понятно, почему в запросе сразу нельзя посчитать - молчит. Мутный тип. |
|||
37
RomanYS
21.09.20
✎
17:43
|
(35) Бинго!
Для ОФ разница в 30 раз ТВ = ТекущаяУниверсальнаяДатаВМиллисекундах(); Переменная = 0; Для инд = 1 По 100000 Цикл Переменная = Переменная + 1; КонецЦикла; Сообщить((ТекущаяУниверсальнаяДатаВМиллисекундах()- ТВ)); ТВ = ТекущаяУниверсальнаяДатаВМиллисекундах(); РеквизитФормы = 0; Для инд = 1 По 100000 Цикл РеквизитФормы = РеквизитФормы + 1; КонецЦикла; Сообщить((ТекущаяУниверсальнаяДатаВМиллисекундах()- ТВ)); |
|||
38
John83
21.09.20
✎
17:50
|
(31) кстати да
на форму выведены некоторые переменные |
|||
39
John83
21.09.20
✎
17:51
|
(28) и точность надо бы снизить
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |