Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Одна строка выполняется существенно дольше чем другие судя по замеру производительности

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.