Имя: Пароль:
1C
1С v8
Производительность оператора Выполнить(ИсполняемыйКод)
0 fisher
 
07.09.12
10:44
Кто-то может проверял уже...
Насколько велики накладные расходы на вызов этого метода?
Подмывает окончательно универсализировать один блок, заменив развесистое дерево "Если" с обработкой особых условий на Выполнить().
Но количество итераций немаленькое, поэтому волнует насколько сильно упадет производительность...
1 vmv
 
07.09.12
10:46
выкладывай свой г-код не будь жаден, хоть посмотрю до чего докатились ваятели нетленок
2 fisher
 
07.09.12
10:49
Не вижу смысла ТС-у оффтопить.
3 vmv
 
07.09.12
10:51
(2) как можно делать выводы о прозводительности, не видя, что ты суешь в этот ущербный оператор назначение которого быть затычкой в исключительных случаях, а не средством унификации кода в мечтах недалеких умов.

Я логичен?
4 pumbaEO
 
07.09.12
10:53
(3) нет, не прав.  У меня допустим чудесно справочник Алгоритмы интегрирован с различными проверками определенных документов, при проведении, записи и т.д.
5 fisher
 
07.09.12
10:54
(3) Без понятия, логичен ты или нет. Мне это не интересно.
Абсолютные значения мне тоже не нужны.
Достаточно субъективных оценок, то бишь плюс-минус порядок хотя бы. Типа "заменил - разницы не увидел" или "заменил - писец тормозить стало". "На количестве итераций такого-то порядка" ессно.
6 Reset
 
07.09.12
10:54
Не проверял, не создавалось ситуации, когда я был вынужден к использованию метода в узком месте.
Теоретически - накладные расходы - это компиляция при каждом выполнении, а не один раз при создании объекта.
Если выполняться будет один раз, можно, вероятно, считать расходы низкими (т.е. близкими к обычному выполнению).
Кроме, конечно, других минусов - невозможности отладки, отсутвии синтаксического контроля при сохранении и тп.
7 fisher
 
07.09.12
10:55
(6) Спасибо, кэп.
8 Reset
 
07.09.12
10:57
Ок.Если нужна субъектиная оценка - существенно медленнее.
9 orefkov
 
07.09.12
10:57
Для устранения развесистых Если умными людьми было придумано ООП с виртуальными функциями.
А одинэсников считают рылом не вышедши, и ООП не дают.
Ну хрен с ним, с ООП, хотя бы делегаты на функции бы дали, так и такой малости нет.
10 acsent
 
07.09.12
10:59
(0) Подумай об отладке
11 vmv
 
07.09.12
11:02
есть данные которые кешируются или методы с повторным изпользованием

думаю Выполнить() ложит болт на эти весьма важные факты, а если это в итерациях - то это не болт уже, а бревно
12 orefkov
 
07.09.12
11:03
(7)
Производительность упадет.
А насколько - зависит от кода, перетаскиваемого в Выполнить.
13 fisher
 
07.09.12
11:04
(8) Жаль... Надеялся, что может все-таки кэширует уже копилированные куски при многократных итерациях.
(9) В данном конкретном случае плодить кучу наследников-близнецов ради смехотворной задачи как-то не алё было бы...
(10) Подумал. Там небольшие кусочки, не страшно.
(11) Вот и я так думаю...
14 Reset
 
07.09.12
11:04
"как можно делать выводы о прозводительности, не видя, что ты суешь в этот ущербный оператор"
кстати +много
15 fisher
 
07.09.12
11:05
(12) В моем случае, думаю, зависит как раз не от кода (его немножко и он простой), а от базовых накладных расходов.
16 acsent
 
07.09.12
11:05
если кончено математику считать то наверно сильно отличается, если в базу писать/читать то не заметно
17 fisher
 
07.09.12
11:07
(14) Да какая в "опу" разница? Что не засунь - выполняться будет одинаково. Добавляются затраты на компиляцию и т.п.
18 Reset
 
07.09.12
11:08
(17) Имеется в виду полный контекст задачи, а не конкретный оператор.
19 Reset
 
07.09.12
11:09
Иначе это обсуждение известного коня в вакууме
20 Reset
 
07.09.12
11:13
Для i=1 по 100000 цикл б=123.1; ц=321.6; а=б*ц; КонецЦикла; // 3.29 с

Для i=1 по 100000 цикл Выполнить("б=123.1; ц=321.6; а=б*ц;"); КонецЦикла; // 0.09 с

Это будет ответом на накладные расходы?
21 Reset
 
07.09.12
11:14
Время наборот, перепутал когда писал
22 fisher
 
07.09.12
11:18
(20) Да. Будет. Спасибо. Уже сам понял, что проще было самому простейший тест забабахать, чем от теоретегов отбиваться.
а = 1; на миллионе итераций за 3 сек выполнилось.
Тоже самое через Выполнить() пихтарит до сих пор.
Ну его в задницу, всем спасибо.
23 fisher
 
07.09.12
11:20
О! Закончило. На миллионе итераций разница в производительности присвоения единичке составила два порядка.
24 Stepa86
 
07.09.12
11:20
активно юзаю алгоритмы, количество выполнений большое (до сотен тыщ в час), по сравнению с остальным кодом замедление не принципиально
25 fisher
 
07.09.12
11:21
Сотни тыщ в ЧАС? Большое? Гы :)
26 vmv
 
07.09.12
11:23
(24) если это служебные алгоритмы администратора приложения(зачистка, перезаполнение, поиск невесть чего, анализ невесть чего) - то это допустимо.

А если такого рода алгоритмы навешивать на реальные объекты БД с которыми каждый день работают хомячки, то самое правильное расчлетить автора и отдать на съедение тем самым хомячкам
27 Reset
 
07.09.12
11:24
С другой стороны, абсолютно по барабану (с т.з производительности) писать Док.Записать(Режим.Проведение) или Выполнить("Док.Записать(Режим.Проведение)"). Думаю, тема исчерпана ( с моей стороны по кр мере)
28 Stepa86
 
07.09.12
11:27
(25) ну там как бэ не только это есть
(26) все оправдано и допустимо, не беспокойтесь
29 fisher
 
07.09.12
11:35
(26) Да ну. Если десяток раз за проведение используется - то монопенисуально с точки зрения производительности.
(27) Тоже считаю тему исчерпанной.
30 Stepa86
 
07.09.12
11:42
(25) может стоит обратить внимание на количество обращений? если 100k это "гы", то есть смысл подумать над кешированием и изменении алгоритма