Вход | Регистрация
 

Циклы и Рекурсия

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

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