Имя: Пароль:
1C
1С v8
Одна строка выполняется существенно дольше чем другие судя по замеру производительности
0 RetardedToBoot
 
12.05.20
08:55
Есть вот такой код с замером производительности:
https://drive.google.com/open?id=18z9fxXQkwO0a4WSt06wE0U-H3_Qvag2Y

Почему одна из строк выполняется аж 18%, в то время как остальные аналогичные порядка 0.01%?

В строке присутствуют только арифметические действия аналогичные соседним строкам.
с_о это СтрокаТаблицыЗначений.

Для сравнения, в этом же замере простой запрос к базе выполняется быстрее даже при большем количестве
вызовов чем предыдущие арифметические операции:
https://drive.google.com/open?id=1_rl7zb9puJeZdg347cwF6immC9vEFEEm
(запрос к базе состоит из простой выборки табличной части по ссылке на документ).
1 Bigbro
 
12.05.20
08:59
типизация?
из шаманских техник - попробуй умножение перенести влево, деление вправо.
2 BeerHelpsMeWin
 
12.05.20
09:02
(1) или на две строки разбить
3 ASU_Diamond
 
12.05.20
09:04
(0) остальные строки ну не как не аналогичные
2 раза обращение к строке ТЗ, 3 действия 2 уровня.
Скорее всего дольше из-за появление нецелых чисел после деления, ИМХО.
4 Cyberhawk
 
12.05.20
09:18
Это карма такая за выбранный стиль именования переменных
5 trad
 
12.05.20
09:28
https://prnt.sc/sf4g0r
через много пробелов,за границами экрана, есть инструкция
6 1Снеговик
 
гуру
12.05.20
09:32
(0) ну все логично, это самая тяжелая операция из всего цикла, аж умножить и разделить надо)
7 Lama12
 
12.05.20
09:38
(0) Вряд ли это даст большой прирост в скорости, но может сначала умножить, а потом делить? Точность, точно повысится.
8 arsik
 
гуру
12.05.20
09:44
За_такое_поубивал_бы.
9 fisher
 
12.05.20
09:49
(8) подчеркиваниями_грешат_ненавистники_кэмел_кейсов
НоСтрашнееВсего_смешение_стилей
10 fisher
 
12.05.20
09:50
Если не оправдается (5), то остается деление.
Операция деления в 1С имеет переменную длительность и зависит от количества знаков после запятой, которые при этом образуются. 1С выполняет арифметические операции с фиксированной точкой и очень большим количеством знаков после запятой. Еще в 7.7 был смешной способ существенного ускорения подобных вычислений - вместо переменной использовали реквизит с ограниченным количеством знаков после запятой.
Но на практике это имеет примерно такой же смысл, как другие "шаманские" приемы типа размещения операторов в одной строке - актуально только для "числодробилок" (очень большого количества итераций без обращений к БД).
(0) > в этом же замере простой запрос к базе выполняется быстрее
Скорость в процентах сравниваем? Ну-ну.