Имя: Пароль:
1C
 
Циклы и Рекурсия
🠗 (Волшебник 25.01.2021 10:53)
0 BaldKiwi
 
25.01.21
02:55
Добрый день, задался таким вопросом, а что потребляет больше памяти, Цикл или Рекурсия и почему?
1 rphosts
 
25.01.21
03:14
Рекурсия тащит весь контекст, если ты его не ограничил, потом сами данные для интерпретатора о том, куда вернуть управление... И вообще ранее на глубине рекурсии порядка 6-7К начинались проблемы.
2 BaldKiwi
 
25.01.21
03:20
(1) То-есть я правильно понимаю, что допустим для оптимизации, лучше всего использовать циклы, чем рекурсии?
3 rphosts
 
25.01.21
03:53
(2) да
4 H A D G E H O G s
 
25.01.21
04:13
1.5 Кбайта стека тратится в последнем релизе, что ограничивает вложенность рекурсии 600-700 уровнями.
5 H A D G E H O G s
 
25.01.21
04:14
1.5 Кбайта стека тратится в последнем релизе на 1 уровень, что ограничивает вложенность рекурсии 600-700 уровнями.
6 BaldKiwi
 
25.01.21
04:29
(3) (5) Спасибо за информацию
7 rphosts
 
25.01.21
06:14
(4) на 64х-то?
8 H A D G E H O G s
 
25.01.21
10:53
(7) Размер стека везде 1 Мб. И увеличить его особо нельзя.
9 Asmody
 
25.01.21
11:02
Рекурсия - штука опасная. Для стековых машин вообще практически противопоказана. Может помочь оптимизация хвостовой рекурсии, но в 1С с этим никак.
10 Кирпич
 
25.01.21
11:22
(8) А что в 1с интерпретатор на системном стеке прям работает?
11 H A D G E H O G s
 
25.01.21
11:46
(10) Ну да.
Можно сделать рекурсию и смотреть размер стека на 100-200-300 уровне по точке останова через VmMap
12 H A D G E H O G s
 
25.01.21
11:46
(10) А больше стека задать нельзя - потоки пользователей будут съедать память впустую, так как стек особо нигде не используется, кроме как рекурсии.
13 Кирпич
 
25.01.21
11:47
(11) попробовал. 1600 уровень прокатывает. 1700 валится.
14 H A D G E H O G s
 
25.01.21
11:47
(13) 8.3.18 ?
15 Кирпич
 
25.01.21
11:48
8.3.17
16 H A D G E H O G s
 
25.01.21
11:51
(15) В 8.3.18 все сломали :-)
попробовал на Дельфи - сломалось на 30000 уровне.
17 Кирпич
 
25.01.21
12:03
(16) Ну это если параметры через стек не передавать. С параметрами то быстрее сдохнет.
А в 1с, похоже, параметры не через стек передаются. Чота добавляю параметры и ничего не меняется
18 H A D G E H O G s
 
25.01.21
12:09
(17) Ссылки скорее всего передаются.