Смотрю на urllib3 python library и там retries реализовано как рекурсия. я бы такое реализовал как while().
Внимание - вопрос! Рекурсия это хорошо или плохо?
Форум → Программирование → Общие вопросы программирования → Рекурсия это хорошо или плохо?
Страницы: ← Следующая страница →
Янв. 26, 2016, 8:28 п.п., спустя 27 минут 14 секунд
С мобилы, по этому кратко. Рекурсия с неконтролируемой вложенностью -- плохо )
Янв. 26, 2016, 8:41 п.п., спустя 13 минут 33 секунды
@phpdude, в плане производительности рекурсия, конечно, сосёт. поэтому умные компиляторы умеют разворачивать хвостовую рекурсию в цикл
Янв. 26, 2016, 8:57 п.п., спустя 15 минут 28 секунд
@phpdude, в плане производительности рекурсия, конечно, сосёт. поэтому умные компиляторы умеют разворачивать хвостовую рекурсию в цикл
@master, + call stack увеличивается. Вот я и удивился отчего же у них там рекурсия то
@phpdude, в плане производительности рекурсия, конечно, сосёт. поэтому умные компиляторы умеют разворачивать хвостовую рекурсию в цикл
@master, а ну в плане написания она проще - да и кода как правило меньше занимает. Вопрос - чему проще обучиться? Рекурсии или циклу? :)
Янв. 26, 2016, 9:05 п.п., спустя 8 минут 48 секунд
@phpdude, говнокодить-то всегда проще. но с циклами вернее, не всякий транслятор умеет TCO
Does Python optimize tail recursion?
I have the following piece of code which fails with the following error: RuntimeError: maximum recursion depth exceeded I attempted to rewrite t
stackoverflow.com
Янв. 26, 2016, 9:08 п.п., спустя 2 минуты 6 секунд
@master, да, любопытно
в общем низачод urllib3 team да? :)
Янв. 26, 2016, 9:53 п.п., спустя 5 минут 27 секунд
Дуд опять троллингует
@Crank, отчегожэ
Янв. 26, 2016, 9:55 п.п., спустя 2 минуты 46 секунд
@phpdude, такое ощещение что ты задал вопрос уже зная ответ ))))
Янв. 26, 2016, 9:58 п.п., спустя 2 минуты 32 секунды
@phpdude, такое ощещение что ты задал вопрос уже зная ответ ))))
@Crank, тебе ощущается всего лишь :)
Янв. 27, 2016, 3:56 д.п., спустя 5 часов 1 минуту 57 секунд
@master, да, любопытно
Спустя 17 сек.в общем низачод urllib3 team да? :)
@phpdude, скорее да.
ведь циклы потом тоже разворачиваются в линейную последовательность команд. ещё Мыщъх в своей статье об оптимизации алгоритмов описывал нюансы производительности: современные компьютеры выполняют линейные последовательности намного быстрее циклов и намного-намного быстрее рекурсии за счёт своей суперскалярной архитектуры. когда цикл переходит на следующую итерацию - весь конвейер сбрасывается, соответственно, вся работа блоков предварительной выборки/предсказаний коту под хвост.
Янв. 27, 2016, 3:59 д.п., спустя 2 минуты 58 секунд
@master, ну да, есть логика в этом
Янв. 27, 2016, 4:14 д.п., спустя 14 минут 30 секунд
Internet Archive Wayback Machine [web.archive.org]
"Суперскалярные микропроцессоры, построенные по конвейерной архитектуре (а все современные микропроцессоры именно так и устроены), быстрее всего выполняют линейный код и ненавидят ветвления. В лучшем случае они дезориентируют процессор, слегка приостанавливая выполнение программы, в худшем же - полностью очищают конвейер. А на последних Pentium'ах он очень длинный (и с каждой последующей моделью становится все длиннее и длиннее). Быстро его не заполнишь... на это может уйти не одна сотня тактов, что вызовет обвальное падение производительности.
Оптимизация переходов дает значительный выигрыш, особенно если они расположены внутри циклов (кстати говоря, циклы - это те же самые переходы), поэтому качество компилятора не в последнюю очередь определяется его умением полностью или частично избавляться от ветвлений."
Internet Archive Wayback Machine
web.archive.org
InsidePro Software offers professional solutions for hash cracking
InsidePro Software offers professional and free solutions for hash cracking
insidepro.com
Техника оптимизации под Linux (Часть 2 - ветвления)
Техника оптимизации под Linux (Часть 2 - ветвления)
web.archive.org
Техника оптимизации под Linux (часть 3)
Техника оптимизации под Linux (часть 3)
web.archive.org
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!