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