|
Одна строка выполняется существенно дольше чем другие судя по замеру производительности |
☑ |
0
RetardedToBoot
12.05.20
✎
08:55
|
Есть вот такой код с замером производительности:
Почему одна из строк выполняется аж 18%, в то время как остальные аналогичные порядка 0.01%?
В строке присутствуют только арифметические действия аналогичные соседним строкам.
с_о это СтрокаТаблицыЗначений.
Для сравнения, в этом же замере простой запрос к базе выполняется быстрее даже при большем количестве
вызовов чем предыдущие арифметические операции:
(запрос к базе состоит из простой выборки табличной части по ссылке на документ).
|
|
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
|
через много пробелов,за границами экрана, есть инструкция
|
|
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) > в этом же замере простой запрос к базе выполняется быстрее
Скорость в процентах сравниваем? Ну-ну.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший