|
Одна строка выполняется существенно дольше чем другие судя по замеру производительности | ☑ | ||
---|---|---|---|---|
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) > в этом же замере простой запрос к базе выполняется быстрее Скорость в процентах сравниваем? Ну-ну. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |