![]() |
|
Модераторы: bsa |
![]()
|
|
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
Пруфлинк? При том, что развернув рекурсию в цикл, полученное можно заинлайнить. |
|||
|
||||
| Любитель |
|
||||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
Насчёт рекурсии - проверено на VC++ 2005, на VC++ 2008 тоже, думаю, сработает.
Исходный код:
Получаем:
Это сообщение отредактировал(а) Любитель - 24.7.2008, 17:44 |
||||
|
|||||
| varnie |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 27.9.2007 Репутация: нет Всего: 0 |
я написал это не для того, чтобы пустые фразы ниже увидеть, а к тому, что если кому-то это интересно, то как минимум можно обратиться к материалу из книги, которую я указал для уточнения. Это сообщение отредактировал(а) varnie - 24.7.2008, 18:21 |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
какой подстановкой? ты о чем? локальные переменные размещаются в стеке, всегда... встроена функция, или нет, это не важно |
|||
|
||||
| phprus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
C++ компилятор от борланда на столько крив и глючен, что не достоен называться компилятором.Он отстал от жизни лет на 20. Возьмите как образец G++, компилятор от Intel или M$ VS. Хвостовая рекурсия раскладывается в цикл элементарно. Такие оптимизации уже давно не редкость. Это именно что ерунда. Сколько пользовался !нормальными! компиляторами никогда такого не замечал в релиз-сборках проектов. Как я понимаю имеется ввиду inline-подстановка тела функции? Если я прав, то в сад. Подстановкой мы экономим вызов функции, те переход на удаленный участок кода, которого скорее всего нет в кеше процессора и тд... А память в стеке выделяется мгновенно, ибо это всего-лишь изменение значения указателя на вершину стека и ВСЕ. Кроме того стек почти гарантированно лежит в кэше процессора, а это еще ускорит работу с используемой частью стека. |
|||
|
||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: нет Всего: 32 |
"Ох, не легкая это работа - из болота тащить бегемота" (с)
Спасибо всем тащившим P.S. Я много вынесла из этой ветки. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
Хоть уже и не актуально, но раз уж обещал дизассемблировать примеры, то в выложенном на первой странице exe компилятор действительно проигнорировал inline, на уровне маш. кода осуществялется вызов отдельной процедуры.
Извиняюсь за задержку, запамятовал -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: нет Всего: 32 |
"не актуально" становится только тогда, когда участники и автор топика полностью разобрались в данном воросе и "постигли сущность сущностей " Не знаю как другие, но я до этого состояния в данной теме еще не дошла Даже не посмотрела что за "мрак хаоса описанный в книжонке Саттера..." (с) DRUID3 Спасибо большое. Теперь предположения, превратились в уверенность Это сообщение отредактировал(а) Riply - 26.7.2008, 22:39 |
|||
|
||||
| Supersedes |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 29.7.2008 Репутация: нет Всего: нет |
Riply, а с каким компилятором ты вообще работаешь?
Это сообщение отредактировал(а) Supersedes - 29.7.2008, 12:36 |
|||
|
||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: нет Всего: 32 |
В данном случае, все происходило под Builder`ом. |
|||
|
||||
| xvr |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Кстати, о птичках - откомпилировал тест под Билдером (6.0)
|
||||||||
|
|||||||||
| Riply |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Комодератор Сообщений: 572 Регистрация: 27.3.2007 Где: St. Petersburg Репутация: нет Всего: 32 |
Можете себе представить какое мнение у меня сложилось о способностях Builder`а, после того как он отказался инлайнить такую простую функцию. Вам удалось чуть-чуть его (это мнение) поднять . Builder должен быть Вам благодарен P.S. И я тоже благодарна |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |